エリアとカテゴリーで絞り込み検索した一覧ページで、ソートを実行すると絞り込んだもの以外のカテゴリが混じってしまいます。
page-sample.php(固定ページ)に絞り込み検索を実装しました。
そこでエリアとカテゴリーをそれぞれ選択すると問題なく該当する記事一覧が表示されます。
ですが、その記事一覧にソートをかけると選択していないカテゴリーが混ざって表示されてしまいます。
なぜなのでしょうか。調べても何の手掛かりもつかめず質問させていただきました。
よろしくお願いします!
■page-sample.php
<!-- 絞り込み検索部分--> <form action="<?php echo get_post_type_archive_link('カスタム投稿名'); ?>" method="get"> <dl> <dt><i class="fas fa-map-marker-alt"></i>エリア</dt> <dd><?php $arg = array( 'hide_empty'=>true, 'parent' => 0, 'orderby' =>'ID' ); echo my_tax_checkbox('area',$arg); ?> </dd> </dl> <dl> <dt><i class="fas fa-folder-open"></i>カテゴリー</dt> <dd> <?php $arg = array( 'hide_empty'=>true, 'parent' => 0, 'orderby' =>'ID' ); echo my_tax_checkbox('cate',$arg); ?> </dd> </dl> <p class="button"><button type="submit"><i class="fas fa-search"></i>検索</button></p> </form>
■archive.php
<!-- ソート部分 --> <h3>並び替え:</h3> <ul> <li><a href="<?php echo add_query_arg( array('orderby' => 'date', 'order' => 'DESC'), get_pagenum_link(1) ); ?>">新着順</a></li> <li><a href="<?php echo add_query_arg( array('meta_key' => 'views', 'orderby' => 'meta_value_num', 'order' => 'DESC'), get_pagenum_link(1) ); ?>">閲覧数の多い順</a></li> <li><a href="<?php echo add_query_arg( array('meta_key' => 'phonetic', 'orderby' => 'meta_value', 'order' => 'ASC'), get_pagenum_link(1) ); ?>">50音順</a></li> </ul>
■functions.php
//絞り込み検索 function my_tax_selectbox($tax,$arg,$default=null) { $qv = get_query_var($tax); $terms = get_terms($tax,$arg); $output = ''; $output .= '<select name="'.$tax.'">'."\n"; if($default) { $output .= '<option value="">'.$default.'</option>'."\n"; } foreach($terms as $t) { $selected = ''; if(is_array($qv)) { if(in_array($t->slug,$qv)) $selected = ' selected'; } else { if($t->slug==$qv) $selected = ' selected'; } $output .= '<option value="'.$t->slug.'"'.$selected.'>'.$t->name.'</option>'."\n"; } $output .= '</select>'; echo $output; } function my_tax_checkbox($tax,$arg) { $qv = get_query_var($tax); $terms = get_terms($tax,$arg); $output = ''; foreach($terms as $t) { $checked = ''; if(is_array($qv)) { if(in_array($t->slug,$qv)) $checked = ' checked'; } else { if($t==$qv) $checked = ' checked'; } $output .= '<label class="c-checkbox"><input type="checkbox" name="'.$tax.'[]" value="'.$t->slug.'"'.$checked.'><span class="c-checkbox__input"></span>'.$t->name.'</label>'."\n"; } echo $output; } //記事一覧のソート function add_meta_query_vars( $public_query_vars ) { $public_query_vars[] = 'meta_key'; $public_query_vars[] = 'meta_value_num'; return $public_query_vars; } add_filter( 'query_vars', 'add_meta_query_vars' );
◆エリアとカテゴリーで絞り込み検索した一覧ページで、ソートを実行すると絞り込んだもの以外のカテゴリが混じってしまった際のパーマリンク
https://sample.jp/カスタム投稿名/?area[0]=area1&orderby=date&order=DESC#038;cate[0]=cate1
⇑「&」が「#038;」に文字化けしている??→URL入力欄で直接「#038;」を「&」に書き換えると、一覧が正常に表示されました。。
--追記--
以下のコードを試してみましたが結果は変わらずでした。
■functions.php
function my_replace_amp($content) { return str_replace('&', '&', $content); } add_filter('the_content', 'my_replace_amp');
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/18 01:04