実現したいこと
カテゴリー'questions'のカテゴリ一覧に、カスタム投稿タイプ'question'の投稿を並べ、ページ送りしたい。
前提
- パーマリンク設定はカスタムで /%category%/%postname%/
- パーマリンク設定のオプションは指定していません。
- 固定ページには'question'も'questions'もありません。
- 管理画面の表示設定は6件で、カスタム投稿タイプでの投稿は7件あります。
- カスタム投稿タイプにカテゴリーは付与していません。
発生している問題
1ページめは正常に表示されるが、2ページ目が404になる。
個別ページURL: https://hogehoge.jp/question/faq01/
一覧ページURL: https://hogehoge.jp/category/questions/
2ページ目URL : https://hogehoge.jp/category/questions/page/2/ ←これが404になる
手入力で https://hogehoge.jp/category/questions/?page=2 ←これは1ページめと同じものが表示される
該当のソースコード
functions.php(カスタム投稿タイプ追加部分)
add_action( 'init', 'create_post_type' ); function create_post_type() { // FAQ register_post_type( 'question', array( //カスタム投稿タイプ名'question' 'labels' => array( 'name' => __( 'FAQ' ), ), 'supports' => array('title', 'editor', 'thumbnail'), 'public' => true, 'menu_position' =>5, )); } // これ以外の記述はなし
category-questions.php(カテゴリー'questions'の一覧表示でカスタム投稿タイプ'question'を表示したい)
<?php $paged = get_query_var('paged')? absint( get_query_var( 'paged' ) ) : 1; //pagedに渡す変数 $args = array( 'post_type' => 'question', //カスタム投稿タイプ名'question' 'posts_per_page' => 6, //posts_per_pageの指定(管理画面設定は1) 'paged' => $paged, ); $the_query = new WP_Query($args); if ($the_query->have_posts()) : //ある場合 while ($the_query->have_posts()) : $the_query->the_post(); ?> <h1><?php the_title(); //ちゃんと表示されている ?></h1> <?php endwhile; else: //ない場合(これは表示されないので投稿は拾われている) ?> <h1>ないよ</h1> <?php endif; ?> <?php echo $the_query->found_posts; //7なので全件取得できていることを確認 ?> <div class="pagination"> <?php $big = 9999999999; $arg = array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => 'page/%#%/', 'current' => max( 1, get_query_var('paged') ), 'total' => $the_query->max_num_pages, 'prev_text' => '前へ', 'next_text' => '次へ', ); echo paginate_links($arg); ?> </div> <?php echo $paged; // 1なので$pagedは取れている wp_reset_postdata(); ?>
試したこと
- カテゴリ名とカスタム投稿タイプ名が同じだったのでカテゴリ名を複数形にした
- pre_get_postsに変えてみた(ご回答ありがとうございました)
- プラグインWP-PageNaviを導入してみた
- プラグインWP-PageNaviを呼び出すときにクエリを渡してみた
- 管理画面での表示設定を1にしてみた
- posts_per_pageを1にしてみた
- パーマリンクをデフォルトにしてみた
- プラグインを切ってみた
- パーマリンク設定を更新してみた
- リンクの書き方を変えてみた(ここのコピペ)
- $pagedの書き方を変えてみた(absint()をつけてみた)
いろいろ検索して、全く同じ問題の記事がたくさん見つかったにもかかわらず、状況は変わらず、解決しませんでした。
よろしくお願いします。
あなたの回答
tips
プレビュー