wordpress カスタム投稿の記事がページ送り(ページネーション)で反映されない時の対処法
wordpressサイトでカスタム投稿の記事を作ってみたところ、ページ送りがうまくいかない・・・。と思ったら、wordpressの$wp_queryに、カスタム記事のsetをしていませんでした。そのため、ページ送りの時にカスタム記事を読んでおらず、変なエラーになっていたようです。
目次
wordpressのカスタム投稿の記事がページ送り(ページネーション)で上手く反映されない時の対処法
カスタム投稿の記事を作ったら、$wp_queryに忘れずにsetする
カスタム投稿の記事を作成したら、忘れずに$wp_queryにpostとしてsetしておきましょう。下記ソースをfunction.phpに記述することで、カスタム記事「custom_article」をpostとして扱うように設定しています。
add_action( 'pre_get_posts', 'home_posts_type' );
function home_posts_type( $wp_query ) {
if ( ! is_admin() && $wp_query->is_main_query() && $wp_query->is_home() ) {
$wp_query->set( 'post_type', array( 'post', 'custom_article' ) );
}
}
上記のように記述しておくことで、カスタム記事「custom_article」をページ送りに反映することはもちろん、whileの呼び出しでも一緒に扱うことができるようになります。
※参考・引用
WordPressでページングが出来ない時はquery_postsではなくis_main_queryで解決だ!!
http://webhoo.net/2013/02/22/page_404_is_main_query/
他の方法は?
もちろん、ページ送りのソースコード側で、$wp_queryに反映させるような記述もできると思います。プラグインを使ってページ送りをしている場合も、同様・・・かな・・・? ソースコードを見てみないとなんともいえませんが、でもたぶん、wp_query関連でカスタム記事を反映させることができると思います。
WordPressにプラグイン無しでページネーションを設置する方法
ちなみに、WordPressにプラグイン無しでページネーションを設置する方法は、colissさんのサイトで分かりやすく解説してありましたので、トライしてみたい方は見てみてください。
まとめ
いかがでしたでしょうか。ページ送りがうまくいかないと焦るかもしれませんが、きちんと潰していけば、まあなんとかなります!