だれかのなにかに役立てるウェブ制作者YoTaの趣味ブログ

wordpress カスタム投稿の記事がページ送り(ページネーション)で反映されない時の対処法

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さんのサイトで分かりやすく解説してありましたので、トライしてみたい方は見てみてください。

まとめ

いかがでしたでしょうか。ページ送りがうまくいかないと焦るかもしれませんが、きちんと潰していけば、まあなんとかなります!

ページ上部に戻る