サポート » 使い方全般 » search.phpの2ページ目以降が404エラーになる

  • 解決済 quiqui

    (@quiqui)


    どうしても解決法がわからないため、質問させていただきます。
    どうぞよろしくお願いいたします。

    下記の情報を参考に、カスタムタクソノミーの絞り込み検索をサイトに追加しました。

    http://techmemo.biz/wordpress/taxonomy-checkbox-refinesearch/

    絞り込み検索はできるようになったのですが、検索結果ページでのページネーションがうまく機能してくれません。2ページめ以降が404エラーになってしまいます。

    ページネーションのコードは以下のようにしています。

    <?php
      $big = 9999999999;
      $arg = array(
        'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
        'current' => max( 1, get_query_var('paged') ),
        'total'   => $wp_query->max_num_pages,
        'mid_size' => 5
      );
      echo paginate_links($arg);
    ?>

    各URLは以下の通りです。

    1ページ目:example.com/?post_type=custompost&s=&cat_area%5B0%5D=terms →正常に表示
    2ページ目:example.com/page/2?post_type=custompost&s=&cat_area%5B0%5D=terms →404エラー

    試しに、「example.com/?page=2&post_type=custompost&s=&cat_area%5B0%5D=terms」に直接アクセスしてみましたが、こちらは1ページ目の検索結果が表示されました。

    また、functions.php内も確認しましたが、pre_get_postsでクエリを制御している、ということもありませんでした。

    色々と調べてみたのですが、絞り込み検索の検索結果という特殊な状況なので、合致するような情報は見つけられませんでした。

    どうかお力添えいただけるとありがたいです。
    よろしくお願いいたします。

    • このトピックはquiquiが4年前に変更しました。
4件の返信を表示中 - 1 - 4件目 (全4件中)
  • スレッド開始 quiqui

    (@quiqui)

    追加情報です。
    タクソノミーによる絞り込みではなく、キーワード検索の場合はちゃんとページ送りできました。

    1ページ目URL:example.com/?s=キーワード&post_type=custompost
    2ページ目URL:example.com/page/2?s=キーワード&post_type=custompost

    タクソノミーの条件が追加されると、ページ送りできないみたいです…

    gblsm

    (@gblsm)

    search.php のコード全体はどのようになっていますか?
    断片的な情報から残りを推測するのは難しくコメントしづらいです。。。

    gblsm

    (@gblsm)

    追記です。
    参考になさったサイトのコードを見ると search.php の中で query_posts() を呼び出して絞り込み検索を行っていますが、それが404エラーの原因ですね。
    ページ送りを実装するときに query_posts() を利用するのは非推奨とされており、代りにアクション pre_get_posts の利用が推奨されています。
    WordPressでページ送りが動かないのはどう考えてもquery_postsが悪い!【pre_get_posts、WordPressループまとめ】

    そのあたり私は詳しくないのでコードは書けませんが、例えば下記のブログ記事で、似たことを行われているようです。

    【ちゃんと動いてなかったので訂正】pre_get_postsを使ったカスタムタクソノミーの複雑な条件検索
    https://wood-roots.com/web/wordpress/1060

    スレッド開始 quiqui

    (@quiqui)

    gblsm様
    ご回答ありがとうございます。

    結果的に、Relevanssiという検索機能を強化するためのプラグインを入れていたのが原因でした。
    Relevanssiを無効化するとちゃんとページ送りできました。

    お手間を取らせてしまい大変失礼いたしました。

    query_posts() を利用するのは非推奨ということなので、
    pre_get_posts を使ったやり方に変えようと思います。

    以上、よろしくお願いいたします。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「search.phpの2ページ目以降が404エラーになる」には新たに返信することはできません。