掲題の件、行き詰まっているため、ご教示ください。
■問題内容
ソートで並べ変えたページ(POSTメソッドで生成)で2ページ目のボタンを押すと、並べ替える前の条件の2ページ目が表示される
→並べ替えたページの2ページ目を表示したいです
ソートはfunction.phpに
以下のようなカスタムフィールドの複数条件で絞り込みされるようpre_get_postsを使っています。
PHP
1function SortArchive( $query ) { 2 $sortset = (string)filter_input(INPUT_POST, 'sort') ; 3 if ( $sortset === 'cheap' ) { //コース料金が安い 4 $query->set( 'meta_query', 5 array( 6 'relation' => 'AND', 7 'fee' => array( 8 'key' => 'fee', 9 ), 10 'fee_blank' => array( 11 'key' => 'fee_blank', 12 'value' => '0', 13 ) 14 ) 15 ); 16 $query->set( 'orderby', 'meta_value_num' ); 17 $query->set( 'order', 'ASC' ); 18 } elseif ( $sortset === 'expensive' ) { //コース料金が高い 19 $query->set( 'meta_query', 20 array( 21 'relation' => 'AND', 22 'fee' => array( 23 'key' => 'fee', 24 ), 25 'fee_blank' => array( 26 'key' => 'fee_blank', 27 'value' => '0', 28 ) 29 ) 30 ); 31 $query->set( 'orderby', 'meta_value_num' ); 32 } elseif ( $sortset === 'cheaponetime' ) { //1回あたりの料金が安い 33 $query->set( 'meta_query', 34 array( 35 'relation' => 'AND', 36 'feeonetime' => array( 37 'key' => 'feeonetime', 38 ), 39 'fee_blank' => array( 40 'key' => 'feeonetime_blank', 41 'value' => '0', 42 ) 43 ) 44 ); 45 $query->set( 'orderby', 'meta_value_num' ); 46 $query->set( 'order', 'ASC' ); 47 } elseif ( $sortset === 'expensiveonetime' ) { //1回あたりの料金が高い 48 $query->set( 'meta_query', 49 array( 50 'relation' => 'AND', 51 'feeonetime' => array( 52 'key' => 'feeonetime', 53 ), 54 'fee_blank' => array( 55 'key' => 'feeonetime_blank', 56 'value' => '0', 57 ) 58 ) 59 ); 60 $query->set( 'orderby', 'meta_value_num' ); 61 } else { //おすすめ 62 $query->set( 'orderby', 'modified' ); 63 } 64 return; 65} 66add_action( 'pre_get_posts', 'SortArchive' ); 67 68?>
ちなみにarchieveページはpostメソッドで絞り込んでいます。
また、getメソッドで検索結果を返すプログラムを同一PHPに記載しております。
その検索結果と、絞り込みが干渉するため、今回絞り込みをPOSTにしております。
大変恐縮なのですが、ソートをGETメソッドに変更する案ではなく、POSTメソッドのまま、ページングをうまく反映する方法が知りたいです。
また、ページングはプラグインを使用せず、以下のPHPで実行しております。
PHP
1<?php 2/*ページャ*/ 3?> 4<div class="wp-pagenavi"> 5<?php global $wp_rewrite; $paginate_base = get_pagenum_link(1); if(strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()){ 6 $paginate_format = ''; 7 $paginate_base = add_query_arg('paged','%#%'); 8} 9else{ 10 $paginate_format = (substr($paginate_base,-1,1) == '/' ? '' : '/') . 11 user_trailingslashit('page/%#%/','paged');; 12 $paginate_base .= '%_%'; 13} 14echo paginate_links(array( 15 'base' => $paginate_base, 16 'format' => $paginate_format, 17 'total' => $wp_query->max_num_pages, 18 'mid_size' => 10, 19 'current' => ($paged ? $paged : 1), 20 'prev_text' => '«', 21 'next_text' => '»', 22)); ?> 23</div>
どこをどのように修正すれば、並べ替えた条件で、ページングの2ページ目が表示されますでしょうか。
お詳しい方、ご教示頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー