質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

2107閲覧

カスタム投稿タイプの投稿を一覧表示したWPのカテゴリ一覧ページでページネーションが動作しない

gobo_k

総合スコア10

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/01/16 12:49

実現したいこと

カテゴリー'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()をつけてみた)

いろいろ検索して、全く同じ問題の記事がたくさん見つかったにもかかわらず、状況は変わらず、解決しませんでした。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問