Как исправить «Попытка получить свойство уведомления необъекта» в Миниатюре предыдущего поста - PullRequest
1 голос
/ 29 мая 2019

Я добавил миниатюру для следующего и предыдущего поста в моей теме Wordpress, в частности, в файле single.php.

Работает как требуется, но отображает уведомление:

Примечание: Попытка получить свойство необъекта в \ wp-content \ themes \theme \ template-parts \ content-footer.php в строке 27

Я опробовал некоторые примеры из похожих ответов на этом сайте, но они не работают для меня.Я удалил и $prevPost->ID, и $nextPost->ID, но вместо этого он отображает текущий эскиз.

Код, вызывающий ошибку, приведен ниже: Строка кода, вызывающая уведомление, это строки 3-й и 4-й :

<?php 
    $prevPost = get_previous_post(); 
    $nextPost = get_next_post(); 
    $prevthumbnail = get_the_post_thumbnail($prevPost->ID, array(50,50) );  
    $nextthumbnail = get_the_post_thumbnail($nextPost->ID, array(50,50) );  
?>

Миниатюры были вызваны с использованием следующих кодов:

<div class="uk-width-auto"><?php echo $prevthumbnail; ?></div> и <div class="uk-width-auto"><?php echo $nextthumbnail; ?></div>, которые оба работают.

Ошибка является просто уведомлением, поэтому она не нарушает работу сайта и даже не появляется, если WordPressотладка включена.Однако я бы предпочел не получать это уведомление, чтобы не вызывать беспокойство у моего клиента.

Есть идеи, как решить эту проблему?

1 Ответ

2 голосов
/ 29 мая 2019

Итак, в WordPress - первый пост в базе данных НЕ будет иметь «предыдущий» пост, а последний пост не будет иметь «следующий» - так что это поведение совершенно нормально.

Чтобы предотвратить уведомление, вам просто нужно проверить, существует ли оно первым - я обычно использую empty для выполнения проверки, например:

$prevPost = get_previous_post(); 
$nextPost = get_next_post(); 
if ( ! empty( $prevPost->ID ) ) {
    $prevthumbnail = get_the_post_thumbnail($prevPost->ID, array(50,50) );  
}

if ( ! empty( $nextPost->ID ) ) {
    $nextthumbnail = get_the_post_thumbnail($nextPost->ID, array(50,50) );  
}

Обратите внимание, что это можетимеет нежелательный эффект, оставляя $nextthumbnail и / или $prevthumbnail в качестве неопределенных переменных, поэтому для борьбы с этим я бы рекомендовал изменить код еще больше:

$prevPost = get_previous_post(); 
$nextPost = get_next_post(); 
// use a ternary to set the thumbnail if not empty, or empty string if empty
$prevthumbnail = ( empty( $prevPost->ID ) ) ? '' : get_the_post_thumbnail($prevPost->ID, array(50,50) );  
// use a ternary to set the thumbnail if not empty, or empty string if empty
$nextthumbnail = ( empty( $nextPost->ID ) ) ? '' : get_the_post_thumbnail($nextPost->ID, array(50,50) );  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...