Wordpressのカスタムフィールド内の投稿オブジェクトから、セレクトボックスで絞り込み検索したい。
解決したいこと
Wordpressのカスタムフィールド内の投稿オブジェクトから、セレクトボックスで絞り込み検索したいです。
- 【 カスタム投稿タイプ 】コンサート:concertsに、ACFでデータを持たせている。
- 【 カスタムフィールド1 】チケットステータス:status(セレクトボックス、単数)
- 【 カスタムフィールド2 】演奏者:performer(投稿オブジェクト、複数)
- 【 カスタムフィールド3 】楽器:search_instrument(チェックボックス、複数)
- これらを検索フォームにて、絞り込みしたい。
発生している問題・エラー
楽器と演奏者の絞り込みができない。検索をかけるとヒット件数が0件になってしまう。
- statusは問題なく絞り込みできた。
- 【 performerの返り値 】連想配列(セレクトボックスに入れたいのは、titleのslug)
- 【 search_instrumentの返り値 】flute、violin、piano
該当するソースコード
【 search.php 】
$s = $_GET['s'];
// ステータスのクエリを追加
if(isset($_GET['status'])){
$metaquerysp[] = array(
'key'=>'status',
'value'=>$_GET['status'],
);
}else{
$metaquerysp[] = '';
}
// 演奏家のクエリを追加
if(isset($_GET['performer'])){
$metaquerysp[] = array(
'key'=>'performer',
'value'=>$_GET['performer'],
'campare' => 'LIKE'
);
}else{
$metaquerysp[] = '';
}
// 演奏楽器のクエリを追加
if(isset($_GET['search_instrument'])){
$metaquerysp[] = array(
'key'=>'search_instrument',
'value'=>$_GET['search_instrument'],
'campare' => 'LIKE'
);
}else{
$metaquerysp[] = '';
}
// 2件以上でrelationを追加
if( 1<count($metaquerysp) ) {
$metaquerysp['relation'] = 'OR';
}
$search_args = array(
'post_type' => 'concerts',
...
's' => $s,
'meta_query' => array(
$metaquerysp,
)
);
$the_query = new WP_Query( $search_args );
【 my_saerchform.php 】
<form method="get" action="<?php bloginfo( 'url' ); ?>" class="my_searchform">
<label for="s"><i class="bi bi-circle-fill"></i>キーワード検索</label>
<input name="s" id="s" type="text" placeholder="キーワードを入力"/>
<input type="hidden" name="s">
<label for="status"><i class="bi bi-circle-fill"></i>ステータス</label>
<select name="status" id="status" class="input">
<option value="" selected='selected'>全てのコンサート</option>
<option value="sale">チケット販売中</option>
<option value="prepare">販売準備中</option>
<option value="finish">終了しました</option>
</select>
<label for="performer"><i class="bi bi-circle-fill"></i>演奏者</label>
<select name='performer' id='performer' class="input">
<option value="" selected="selected">全ての演奏者</option>
<option value="takashi_tanaka">田中たかし</option>
...
</select>
<label for="search_instrument"><i class="bi bi-circle-fill"></i>演奏楽器</label>
<select name='search_instrument' id='search_instrument' class="input">
<option value="" selected="selected">全ての楽器</option>
<option value="violin">ヴァイオリン</option>
<option value="viola">ヴィオラ</option>
<option value="cello">チェロ</option>
<option value="bass">コントラバス</option>
...
</select>
<input id="submit" type="submit" value="検索" />
</form>
何か抜けている部分や、不足している知識があれば
解決の助言をいただけますと幸いですm(_ _)m
0