Single.phpのループ内で、get_posts
を使用したカスタムクエリを使用して特定のカテゴリに属する投稿を返しました。
<?php global $post;
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$myposts = get_posts("paged=$paged&category=5");?>
<?php foreach($myposts as $post) :?>
<?php the_title();?>
<?php endforeach; ?>
問題は、single.phpループである元のループが、クエリの実行後に機能しないように見えることです。たとえば、ナビゲーションリンク(次と前)は機能しません。
あなたはこの問題に直面したことがありますか?あなたの助けは大歓迎です。
ナビゲーションリンク関数が次/前の投稿を決定するために使用するグローバル$post
変数を復元するには、クエリの後に wp_reset_postdata()
を呼び出す必要があります。
WP_Query
の代わりに get_posts
を使用することもできます。ただし、ほぼ同じことができますが、参考のために、
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array ( 'category' => 5, 'paged' => $paged, 'posts_per_page'=> 5 );
$catPosts = new WP_Query( 'post_type=post' );
if( $catPosts->have_posts() ){ ?>
<ul>
<?php while ($catPosts->have_posts()) : $catPosts->the_post(); ?>
<li>
<a href="<?php the_permalink();?>"><?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>
<?php
} else {
// no posts found
}
wp_reset_postdata();