前提・実現したいこと
どうしても分からなく質問をさせて頂きました。
カスタム投稿の絞り込み検索で、スラッグをチェックリストで選択すると、一致スラッグのみを表示させたい。
スラッグの例
スラッグ1
スラッグ2┬スラッグ2-1
├スラッグ2-2
├スラッグ2-3
└スラッグ2-4
スラッグ3┬スラッグ3-1┬スラッグ3-1-1
│ ├スラッグ3-1-1
│ ├スラッグ3-1-2
│ ├スラッグ3-1-3
│ └スラッグ3-1-4
├スラッグ3-2
├スラッグ4-3
└スラッグ5-4
スラッグ1には子スラッグが存在します。
数字-1は子、孫スラッグになります。
投稿のスラッグ例
スラッグ1、スラッグ1-1、スラッグ3-1、スラッグ3-1-1
上記のスラッグを選択中、絞り込み検索でスラッグ1とスラッグ3-1を選択している時に絞り込み検索でヒットさせたい。
参考にしたサイト
https://kotori-blog.com/wordpress/refinement_search/#refinement6_2
発生している問題・エラーメッセージ
スラッグ1だけ検索すると、ヒット数が0になる。
投稿のスラッグ1の子スラッグをすべてをつけると検索に引っかかる。
現在スラッグ1、スラッグ3-1にチェックを付けた場合検索にヒットしなくなります。
該当のソースコード
$s = $_GET['s'];
$post_type = $_GET['post_type'];
$catnum = $_GET['catnum'];
query_posts( array( 'paged' => $paged, 'post_type' => $post_type, 's' => $s, 'tax_query' => array( 'relation' => 'AND', array( 'taxonomy'=>'タクソノミー名', 'terms'=>$catnum, 'include_children'=> true, 'field'=>'slug', 'operator'=>'AND' ) ) ));
if( have_posts() ):
echo '<section class="voiceArc1 service1"><h4>';
if( !empty($$catnum) ) {
if(is_array($catnum)) {
foreach($catnum as $val){
echo get_term_by('slug',$val,"タクソノミー名")->name." ";
}
}
echo 'の検索結果';
} else {
echo $s.' の検索結果';
}
echo '</h4></section><div class="voiceArcArea searchListArea">';
while (have_posts()) : the_post();
archivePerfor();
endwhile;
echo '</div></section>';
試したこと
'operator'=>'AND'部分を'operator'=>'IN'に変更すると、
スラッグ1、スラッグ3-1にチェックを付けた場合検索にヒットしますが、
スラッグ1、もしくはスラッグ3-1どちらか該当してる場合ヒットしてしまいます。
補足情報(FW/ツールのバージョンなど)
WordPress バージョン5.1.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/20 10:39
2019/04/21 00:33