カスタムループがあります。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$works = new WP_Query('category_name=work&posts_per_page=9&paged=' . $paged);
ページ付けは3ページを出力します。最初に9件の投稿があります。これも投稿の総数です。2および3ページには投稿はありません(投稿がない場合はページがないはずです)
これが私のpaginate_links()
です。
<?php elseif ( $wp_query->max_num_pages > 1 && ( is_home() || is_archive() || is_search() || is_category() ) ) : // navigation links for home, archive, and search pages ?>
<?php
global $wp_query;
$big = 999999999;
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'prev_text' => '',
'next_text' => '',
'current' => max( 1, get_query_var('paged') ),
'total' => $wp_query->max_num_pages
) );
?>
<?php endif; ?>
デフォルトのループでは、すべて問題ありません。
カスタムのWP_Query
を使用して投稿をクエリしますが、ページネーションでは、異なるクエリを含むグローバルな$wp_query
変数を使用します。
ページネーションでカスタムクエリ変数$works
を使用するか、ページネーション関数を呼び出す前にグローバル$wp_query
変数を変更する必要があります。
あなたはページ付けを出力するために普遍的な機能を使うので、2番目の方法はより良く/より簡単になるでしょう。これを好きですか?
global $wp_query;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$works = new WP_Query('category_name=work&posts_per_page=9&paged=' . $paged);
$original_query = $wp_query; // store original query for later use
$wp_query = $works; // overwrite it with your custom query
... your code
... your pagination code
$wp_query = $original_query; // restore original query
カスタムのWP_Query/$works
オブジェクトを使って、paginate_links()
引数のデータにアクセスすることもできます。
paginate_links( array(
'base' => str_replace( 99999999, '%#%', esc_url( get_pagenum_link( 99999999 ) ) ),
'format' => '?paged=%#%',
'prev_text' => '',
'next_text' => '',
'current' => max( 1, $works->get( 'paged' ) ),
'total' => $works->max_num_pages
) );