固定ページにサブクエリを使って投稿を表示させ、WP-PageNaviプラグインでページ送りを表示させる方法のめも。
固定ページのテンプレートにただプラグインを表示させるコードif(function_exists('wp_pagenavi')){wp_pagenavi();}
を書いてもナビゲーションは表示されません。
引数に投稿のクエリを渡してあげる
WP-PageNaviを表示する関数にページ送りを表示させたいクエリを渡してあげればOKなようです。
<?php // page.php ページテンプレート // サブクエリを作成 $the_query = new WP_Query(array( 'post_type' => 'post', 'posts_per_page' => 10, 'post_status' => 'publish', )); if ( $the_query->have_posts() ) : ?> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> // サブクエリで取得した投稿を表示させる場所 <?php endwhile; ?> // WP-PageNavi <?php if( function_exists('wp_pagenavi') ) { // サブクエリを引数で渡してあげる wp_pagenavi( $the_query ); } ?> <?php endif;?> <?php // サブクエリをリセット wp_reset_postdata(); ?>
ページ送りのリンクが上手く動作しないので修正する
元が固定ページなので単にWP_Query
で取得しただけで常に1ページ目となってしまい投稿の2ページ目などがうまく表示されません。何ページ目を表示するのかをWP_Queryに渡してサブクエリを取得してあげる必要があります。
先ほどのコードを修正します。
<?php // page.php ページテンプレート // 何ページ目かを取得 // $pagedはglobal変数として存在するっぽいけど念のため $paged = get_query_var('paged')? get_query_var('paged') : 1; // サブクエリを作成 $the_query = new WP_Query(array( 'post_type' => 'post', 'posts_per_page' => 10, // 何ページ目を指定してサブクエリを取得する 'paged' => $paged, 'post_status' => 'publish', )); if ( $the_query->have_posts() ) : ?> <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?> // サブクエリで取得した投稿を表示させる場所 <?php endwhile; ?> // WP-PageNavi <?php if( function_exists('wp_pagenavi') ) { // サブクエリを引数で渡してあげる wp_pagenavi( $the_query ); } ?> <?php endif;?> <?php // サブクエリをリセット wp_reset_postdata();
これで、固定ページ内でサブクエリで取得した投稿のページ送りがWP-PageNaviプラグインでそのまま使えるようになりました。
本来カスタム投稿タイプを作ってarchiveテンプレートを作ったり、pre_get_posts
を使って大本のクエリを変更してあげるのが良いのだと思うのですが、いろいろな事情で固定ページ内にサブクエリで投稿などを表示したいという案件もまだまだあるかと思いますので、メモ。その案件に当たったのです。
[参考]
wordpress.org
- WordPress › フォーラム » 固定ページに wp_pagenavi を表示させてたい
- WordPressのユーザーマニュアルBeta » WP-PageNavi | ページナビゲーション プラグインの導入方法
- query_postsを捨てよ、pre_get_postsを使おう【追記あり】【報告あり】 | notnil creation weblog
- WordPressでページ送りが動かないのはどう考えてもquery_postsが悪い!【pre_get_posts、WordPressループまとめ】 | notnil creation weblog
- ちょいちょい忘れる『WP_Query』の使い方 | 予習と復習
- 作者: 得能正太郎
- 出版社/メーカー: 芳文社
- 発売日: 2015/03/27
- メディア: コミック
- この商品を含むブログ (14件) を見る