wordpress / query_posts() を使わない固定ページでのマージとページ送り
*reinaru*.wpblog.jp
昨夜の続き。
ページ送り(次のページ、前のページ)が全然出てこない。
たくさん調べても、なかなかよい解説ページに辿り着けない。。。
これまでのやり方( functions.php に記述。<pre_get_posts> を利用)だと
固定ページ以外はマージもページ送りもうまくいってたし、
直近のやり方( <get_posts> も <WP_Query> も)は、表示(抽出)なら
固定ページであってもうまくいってたんだよね。
WordPressのget_postsとWP_Queryの違いと使用方法について
http://yuji-okayama-designersworks.com/wordpress/596/
もどかしい、、、ので、一旦発想を切り替えてみよう。
そのキッカケとなったのはこちらの記述。
現在のWordPressでは、カスタム投稿タイプを使うのが王道です。
WordPressでページ送りが動かないのはどう考えてもquery_postsが悪い!【pre_get_posts、WordPressループまとめ】
http://notnil-creative.com/blog/archives/1996
なるほど。
グローバルメニューからのリンクを固定ページの phpテンプレート(page-XXXX.php)に飛ばさず、
カスタム投稿タイプのアーカイブページ(archive-カスタム投稿タイムのスラッグ.php)に飛ばしたら、
確かに <pre_get_posts> を使って対応ができそうな気がする。
やってみたら、、、、できましたヨ!ステキ!
今回のように、特にマージをしないアーカイブ(一覧)系のページには、
固定ページの phpテンプレート(page-XXXX.php)を使わないようにします。
追記補足)
ただ、、、このやり方だと、残念ながらページのURLに「カスタム投稿タイプのスラッグ」が用いられてしまうようぢゃ。
考えてみれば、当たり前の話なんだけど。
あ!
今回は特にそこまでURLにはこだわらないので、このままでいいけど、
どうしてもページURLを固定ページのスラッグと合わせたい場合は、
固定ページの phpテンプレート(page-XXXX.php)の中に
ループの記載のあるテンプレを作って読み込ませればいいのかな?
もう少し余裕ができたら、試してみよう。