Итак, я пытаюсь написать пользовательскую функцию в 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); ?>"/>
Попробуйте изменить:
alt="<?php the_title(); ?>"
в
alt="<?php echo get_the_title($post->ID); ?>"
Вы получаете сообщение об ошибке, когда пытаетесь использовать что-то вроде the_title();
вне Петля. Использование кода, который я предложил выше, должно это исправить.
РЕДАКТИРОВАТЬ: Добавление global $post;
перед оператором if исправит ошибки. Ты звонил $post->ID
но так как эта функция находится за пределами цикла, эта ошибка была выдана.
Других решений пока нет …