私は2つの異なるループを持っています。ホームページのデフォルトですが、アーカイブページの2次ループです。以下のように、すべてのコンテンツを取得します。
<?php // WP_Query arguments
$args = array (
'posts_per_page' => '3'
);
// The Query
$archiveQuery = new WP_Query( $args );
// The Loop
if ( $archiveQuery->have_posts() ) {
while ( $archiveQuery->have_posts() ) {
$archiveQuery->the_post(); ?>
<div class="post">
<a href="<?php the_permalink() ?>">
<?php first_item(); ?> </a>
しかし、posts_nav_link();
を含めると、表示されません。これは静的ページだからでしょうか。私はこれを無限スクロールに使っています。
WP_Queryで作成されたループの最後に、wp_reset_postdata()を必ず含めてください。
二次クエリの後にメインクエリループのグローバル$ post変数を復元するには
wp_reset_postdata()
を使用してください。 https://codex.wordpress.org/Function_Reference/wp_reset_postdata
// The Query
$the_query = new WP_Query( $args );
// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
/* Restore original Post Data */
wp_reset_postdata();
} else {
// no posts found
}
posts_nav_link
はアーカイブページ用です。その関数はget_next_posts_nav_link
which を使用していますglobal
変数$wp_query
。 !is_singular()
のチェックがあります。 $wp_query
はあなたが作成したクエリではなくページ(単一)を表すので、それはあなたの "静的"ページでは常にfalseになります。それで、はい、それは静的なページだからです。
Chip Bennettは、ページネーションを動作させる方法を説明する、 というかなり徹底的な答えを書いた/まとめました 。