質問: topページ全体にカスタム投稿の一覧が表示されるサイトを作成したいと思っております。 その際に、index.phpにページャーを設置したいのですが、2ページ目以降をクリックすると、 404に飛んでしまい表示されません。 プラグインは、wp site managerを使用しており、 同様のコードをarchive.phpに書いた際は問題なく表示されます。 2ページ目が表示されない場合の記事を調べ、いくつか試してみたのですが、 知識がないためかうまくいきません。 ご教示いただけますと幸いです。 宜しくお願いいたします。 ``` ■カスタム投稿一覧 array('投稿名'), 'showposts' => 20, ); ?> ループ内容 ``` ``` ■ ページャー ```
回答: query_posts は基本的に使わないでコーディングしたほうが問題が起きにくいです。mizさんの回答に書かれているように、テンプレート上で呼び出すのであれば WP_Query か get_posts で処理するのが定石です。 今回の質問内容のような場合は pre_get_posts フックを使ってメインクエリを書き換える方法が良いと思います。 ``` // functions.php function my_home_posts_per_page( $query ) { if ( is_admin() || !$query->is_main_query() ) { return; } /* トップページの表示件数を20件&投稿タイプを「投稿タイプ名」にする */ if ( $query->is_home() ) { // トップページのみ $query->set( 'posts_per_page', '20' ); // ページ毎に20件表示 $query->set( 'post_type','投稿タイプ名' ); // 投稿タイプ名(英文字のスラッグ) } } add_action( 'pre_get_posts', 'my_home_posts_per_page' ); ``` 【[Wordpress]pre_get_postsを使いこなす!pre_get_posts使い方まとめ | EMiAC-Works】 【【wordpress】pre_get_postsを使ってみませんか? - Qiita】