wordpress(PHP8.0)でget_adjacent_postを使うと、次の記事がない場合エラーが表示される
個別投稿タイプで各記事に、「前の記事へ」「次の記事へ」を表示する際get_adjacent_postを使ってプロパティを取得して表示しているのですが、
最新の記事(次の記事が無い場合)に、取得するプロパティがないためかエラーが出てしまいます。
PHP7.4だと大丈夫なのですが、PHP8.0だとエラーが出てしまいます。
対処法などあればご教授ください。
実現したいこと
PHP8.0でget_adjacent_postを使って最新の記事(次の記事が無い場合)を表示してる際に
エラーが出ないようにしたい。
発生している問題・エラーメッセージ
Warning: Attempt to read property "ID" on string in /Users/XXXXXX/Local Sites/sumaho/app/public/wp-content/themes/sumaho/single.php on line 136
該当のソースコード
$previous_post = get_adjacent_post(false,'',true,'category'); $next_post = get_adjacent_post(false,'',false,'category');
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
$previous_postや$next_postといった変数をその後どのように処理していますか?
single.phpの136行目前後だと思います。
質問を編集してソースコードをご提示ください。
ご返信ありがとうございます。
こんな感じになっております。
<?php
$previous_post = get_previous_post(false);
$previous_id = $previous_post->ID;
$previous_date = mysql2date('Y年m月d日', $previous_post->post_date);
$next_post = get_next_post(false);
$next_id = $next_post->ID;
$next_date = mysql2date('Y年m月d日', $next_post->post_date);
if($previous_post or $next_post):
?>
<ul class="postPager">
<li class="postPager__list prev">
<?php if($previous_post): ?>
<a href="<?php the_permalink( $previous_id ); ?>" class="postPager__list__inner">
<div class="postPager-img">
<?php if(has_post_thumbnail($previous_id)): ?>
<img src="<?php echo get_the_post_thumbnail_url( $previous_id, ""); ?>">
<?php else: ?>
<img src="<?php echo esc_url(get_theme_file_uri("images/no-image.jpg")); ?>">
<?php endif; ?>
</div>
<div class="postPager-body">
<p class="label"><span class="arrow"><</span>前へ</p>
<p class="title"><span><?php echo get_the_title($previous_id) ?></span></p>
<p class="time"><span><?php echo $previous_date; ?></span></p>
</div>
</a>
<?php else: ?>
<p class="no-article">記事がありません</p>
<?php endif; ?>
</li>
<li class="postPager__list next">
<?php if($next_post): ?>
<a href="<?php the_permalink( $next_id ); ?>" class="postPager__list__inner">
<div class="postPager-img">
<?php if(has_post_thumbnail($next_id)): ?>
<img src="<?php echo get_the_post_thumbnail_url( $next_id, ""); ?>">
<?php else: ?>
<img src="<?php echo esc_url(get_theme_file_uri("images/no-image.jpg")); ?>">
<?php endif; ?>
</div>
<div class="postPager-body">
<p class="label"><span class="arrow"><</span>次へ</p>
<p class="title"><span><?php echo get_the_title($next_id) ?></span></p>
<p class="time"><span><?php echo $next_date; ?></span></p>
</div>
</a>
<?php else: ?>
<p class="no-article">記事がありません</p>
<?php endif; ?>
</li>
</ul>
<?php else: ?>
<?php endif; ?>
私の説明も良くなかったのですが、ここの質問欄ではなく本文にソースコードを記載ください。
そしてマークダウンで記載ください。
後から見た人に伝えやすくするためです。
回答1件
あなたの回答
tips
プレビュー