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

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

ただいまの
回答率

89.10%

ワードプレスで、条件によるソートをした検索結果のページネーションの付け方が知りたいです

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 83

cwhiro

score 17

検索結果と条件をつなげて、このようにしています。これ自体は意図した通りに表示します。

<?php
    $week = date('Y-m-d', strtotime('+7days'));
    $name= get_search_query();
    global $query_string;
    $args = $query_string;
    parse_str( $args, $args );
    $args_normal = $args + array(
    'posts_per_page' => 36,
    'category__not_in' => array( 3, 137, 571 ),
    'meta_query' => array(
                    'relation' => 'and',
                                    array(
                                    'relation' => 'or',
                                                    array( 
                                                    'key'=> 'species1',
                                                    'value' => $name,
                                                    'compare' => '=',
                                                    ),

                                                    array( 
                                                    'key'=> 'species2',
                                                    'value' => $name,
                                                    'compare' => '=',
                                                    ),

                                                    array( 
                                                    'key'=> 'species3',
                                                    'value' => $name,
                                                    'compare' => '=',
                                                    ),),             
                                    array(
                                    'key'=> '2a',
                                    'value' => array('2020-02-01' , $week),
                                    'compare' => 'BETWEEN',
                                    'type' => 'DATE',
                                    ),                      
                        ),

    );
    $query = new WP_Query($args_normal);
    $all_num_normal = $query->found_posts;
    var_dump($all_num_normal);
    ?>

次にページネーションですが、こちらを使うと、つなげたはずの条件が無視され、全ての検索結果を表示してしまいます。

<div class="pagination" style="margin-top:0rem;">
<?php  
$paginationhtml = get_the_posts_pagination( array( 
'prev_next' =>false,    
'mid_size' => 2,
) ); 
echo preg_replace('/\<h2 class=\"screen-reader-text\"\>(.*?)\<\/h2\>/ui', '', $paginationhtml);
?>
</div>

最初のコードに'paged' => $pagedをつけ足して、このページネーションを使うと、ページ数はあっているのですが、今度はURLが検索に沿った形ではなくなって、ページが開かなくなってしまいます。

<?php
if ($the_query->max_num_pages > 1) {
echo paginate_links(array(
'base' => get_pagenum_link(1) . '%_%',
'format' => '/page/%#%/',
'current' => max(1, $paged),
'prev_next' =>false,    
'mid_size' => 2,
'total' => $the_query->max_num_pages
));
}
wp_reset_postdata();
?>

そもそも、今回のように検索結果に条件をつけた場合、正しいページネーションをつけることは可能なのでしょうか。
どなたかお分かりになる方いらっしゃいましたら、どうぞよろしくお願いサミアドン

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

pre_get_postsを使い、意図した表示ができました

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる