'Events'というカスタム投稿タイプを設定しました。ここでは説明しないので、私は自分のイベントのアーカイブテンプレートとしてarchive-events.php
を使用しませんでした。代わりに、アーカイブとして使用するためのカスタムページテンプレートpage-upcoming-events.php
を作成することにしました。
このテンプレートには、イベントを取り込むためのカスタムクエリを書きました。 posts_per_pageも4に制限しています。previous_posts_link()
とnext_posts_link()
関数を使ってページネーションリンクを追加しました。
これらの関数は/ urcoming-events/page/2 /などの予期されるURLへのリンクを生成しています。
1ページに、最初の4つのイベントと次のイベントのリンクがあります。
私が抱えている問題は、2ページ目に進むと、イベント5〜8ではなく404エラーが発生することです。
カスタムページテンプレートにページ区切りを正しく追加する方法を教えてください。
これは私がページングのためにしていることです。私はそれがあなたが正しい軌道に乗るのを助けることを願っています、それはあなたがやろうとしていることのためにやり過ぎるかもしれません...
最初に$ pagedを設定します。
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
それからあなたの$ args配列を構築します、必ず呼び出してください:
'paged' => $paged
ページングに必要な関数を含めてクエリを実行します(これはサンプルです。必要に応じて変更してください)。
//the query using arguments above
$wp_query = new WP_Query( $args );
//use the query for paging
$wp_query->query_vars[ 'paged' ] > 1 ? $current = $wp_query->query_vars[ 'paged' ] : $current = 1;
//set the "paginate_links" array to do what we would like it it. Check the codex for examples http://codex.wordpress.org/Function_Reference/paginate_links
$pagination = array(
'base' => @add_query_arg( 'paged', '%#%' ),
//'format' => '',
'showall' => false,
'end_size' => 4,
'mid_size' => 4,
'total' => $wp_query->max_num_pages,
'current' => $current,
'type' => 'plain'
);
//build the paging links
if ( $wp_rewrite->using_permalinks() )
$pagination[ 'base' ] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
//more paging links
if ( !empty( $wp_query->query_vars[ 's' ] ) )
$pagination[ 'add_args' ] = array( 's' => get_query_var( 's' ) );
//run the query
if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post();
あとは、ページのリンク先を指定するだけです。
//print the paging links to the page
echo '<div class="pydPaging">' . paginate_links($pagination) . '</div>';
繰り返しますが、これはやり過ぎかもしれませんが、うまくいきます。