WordPress: 固定ページで「前の記事へ」、「次の記事へ」のprevious_post_linkで取得できないときにsetup_postdataを使うとうまくいく
WordPress: 固定ページで「前の記事へ」、「次の記事へ」のprevious_post_linkで取得できないときにsetup_postdataを使うとうまくいきます。
<?php $column_args = array( 'post_type' => 'column', 'posts_per_page' => 1, ); $column_posts = get_posts($column_args); if (!empty($column_posts)): foreach ($column_posts as $post): setup_postdata($post); ?> //ここでsetup_postdata();を使用します <h2><?php the_title(); ?></h2> <div class="entry"> <?php the_content(); ?> </div> <?php $postid = get_the_ID(); ?> <?php endforeach; endif; ?> //wp_reset_postdata();を使用せずに下のページャーのあとに使用します。 <ul class="page_link"> <?php $prev_post = get_previous_post(); if (!empty($prev_post)) { $prev_post_id = $prev_post->ID; echo '<li class="prev"><a href="'. _SITEURL. '/sp/column/' . $prev_post_id .'">前の記事</a></li>'; } $next_post = get_next_post(); if (!empty($next_post)){ $next_post_id = $next_post->ID; echo '<li class="next"><a href="'. _SITEURL. '/sp/column/' . $next_post_id . '">次の記事</a></li>'; } wp_reset_postdata(); ?> </ul>
setup_postdata()は投稿情報を各種のグローバル変数へセットします。
そのため、setup_postdataを使用した後に、リセットしなければ、投稿情報の取得に使用できるのです。
あまり固定ページに詳細ページを表示させることは少ないかと思いますが、そんなときにnext_post_link、previous_post_linkがうまく取得できず、固定ページの次のページを取得してしまう時などに参考になれば幸いです。
参考サイト: