Ошибки с написанием функции WordPress

Итак, я пытаюсь написать пользовательскую функцию в WordPress для отображения featured_image с помощью picturefill и srcset, чтобы отображать различные размеры feat_img, У меня не много тем, но не так много написания функций.

add_theme_support( 'post-thumbnails' );

включен в моем functions.php, Мне также требуется файл с моим кодом:

function responsive_featured_img() {

if ( function_exists('has_post_thumbnail') && has_post_thumbnail($post->ID) ) {
$feat_small = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$feat_med = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'medium' );
$feat_large = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'large' ); ?><img src="<?php echo $feat_small[0]; ?>"srcset="<?php echo $feat_large[0]; ?> 1024w, <?php echo $feat_med[0]; ?> 400w, <?php echo $feat_small[0]; ?> 320w"sizes="100vw"alt="<?php the_title(); ?>"/>

<?php } } ?>

Итак, это на самом деле работает внутри моего шаблона WordPress, но получает много ошибок. Вот так:

    Notice: Undefined variable: post in /Applications/MAMP/htdocs/Bass/wp-content/themes/Bass/inc/responsive-img.php on line 13

Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/Bass/wp-content/themes/Bass/inc/responsive-img.php on line 13

Notice: Undefined variable: post in /Applications/MAMP/htdocs/Bass/wp-content/themes/Bass/inc/responsive-img.php on line 14

Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/Bass/wp-content/themes/Bass/inc/responsive-img.php on line 14

Notice: Undefined variable: post in /Applications/MAMP/htdocs/Bass/wp-content/themes/Bass/inc/responsive-img.php on line 15

Notice: Trying to get property of non-object in /Applications/MAMP/htdocs/Bass/wp-content/themes/Bass/inc/responsive-img.php on line 15

Любые идеи будут великолепны!

ОБНОВИТЬ:
После ввода из Howlin этот код работает без ошибок. Я уверен, что это может быть пересмотрено:

function responsive_featured_img() {
global $post;
if ( function_exists('has_post_thumbnail') && has_post_thumbnail($post->ID) ) {
$feat_small = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'small' );
$feat_med = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'medium' );
$feat_large = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'large' ); ?><img src="<?php echo $feat_small[0]; ?>"srcset="<?php echo $feat_large[0]; ?> 1024w, <?php echo $feat_med[0]; ?> 400w, <?php echo $feat_small[0]; ?> 320w"sizes="100vw"alt="<?php echo get_the_title($post->ID); ?>"/>

-1

Решение

Попробуйте изменить:

alt="<?php the_title(); ?>"

в

alt="<?php echo get_the_title($post->ID); ?>"

Вы получаете сообщение об ошибке, когда пытаетесь использовать что-то вроде the_title(); вне Петля. Использование кода, который я предложил выше, должно это исправить.

РЕДАКТИРОВАТЬ: Добавление global $post; перед оператором if исправит ошибки. Ты звонил $post->ID но так как эта функция находится за пределами цикла, эта ошибка была выдана.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]