街コンの開催情報をスクレイピングしてWordPressのカスタム投稿で投稿したものを例に、プラグイン「Advanced Custom Fields」の値で絞り込み検索を実装します。
今回は都道府県と日付で絞り込み検索できるようにしました。
ACFの値で絞り込み検索
まず事前に必要な情報を確認しておきます。
・カスタム投稿タイプ名
・都道府県のカスタムフィールド名
・日時のカスタムフィールド名
・都道府県選択フォームのname
・日付選択フォームのname
今回の場合だと、それぞれ以下のようになります。
・カスタム投稿名 → love
・都道府県のカスタムフィールド名 → love_pref
・日時のカスタムフィールド名 → love_search_date
・都道府県選択フォームのname → pref
・日付選択フォームのname → date
<form action=”/love/” method=”get”>
<p>開催エリア</p>
<select name=”pref” class=”input”>
<option value=””>未選択</option>
<option value=”北海道”>北海道</option>
<option value=”青森県”>青森県</option>
<option value=”岩手県”>岩手県</option>
<option value=”宮城県”>宮城県</option>
<option value=”秋田県”>秋田県</option>
<option value=”山形県”>山形県</option>
<option value=”福島県”>福島県</option>
<option value=”茨城県”>茨城県</option>
<option value=”栃木県”>栃木県</option>
<option value=”群馬県”>群馬県</option>
<option value=”埼玉県”>埼玉県</option>
<option value=”千葉県”>千葉県</option>
<option value=”東京都”>東京都</option>
<option value=”神奈川県”>神奈川県</option>
<option value=”新潟県”>新潟県</option>
<option value=”富山県”>富山県</option>
<option value=”石川県”>石川県</option>
<option value=”福井県”>福井県</option>
<option value=”山梨県”>山梨県</option>
<option value=”長野県”>長野県</option>
<option value=”岐阜県”>岐阜県</option>
<option value=”静岡県”>静岡県</option>
<option value=”愛知県”>愛知県</option>
<option value=”三重県”>三重県</option>
<option value=”滋賀県”>滋賀県</option>
<option value=”京都府”>京都府</option>
<option value=”大阪府”>大阪府</option>
<option value=”兵庫県”>兵庫県</option>
<option value=”奈良県”>奈良県</option>
<option value=”和歌山県”>和歌山県</option>
<option value=”鳥取県”>鳥取県</option>
<option value=”島根県”>島根県</option>
<option value=”岡山県”>岡山県</option>
<option value=”広島県”>広島県</option>
<option value=”山口県”>山口県</option>
<option value=”徳島県”>徳島県</option>
<option value=”香川県”>香川県</option>
<option value=”愛媛県”>愛媛県</option>
<option value=”高知県”>高知県</option>
<option value=”福岡県”>福岡県</option>
<option value=”佐賀県”>佐賀県</option>
<option value=”長崎県”>長崎県</option>
<option value=”熊本県”>熊本県</option>
<option value=”大分県”>大分県</option>
<option value=”宮崎県”>宮崎県</option>
<option value=”鹿児島県”>鹿児島県</option>
<option value=”沖縄県”>沖縄県</option>
</select>
<p>開催日</p>
<input type=”date” name=”date“>
<input type=”submit” value=”検索する” accesskey=”f” />
</form>
function change_pre_get_posts($query) {
// 管理画面,メインクエリ以外に干渉しないため
if ( is_admin() || ! $query->is_main_query() ){
return;
}
// カスタム投稿タイプが「love」の場合
if($query->is_post_type_archive( ‘love‘ )) {
$meta_query = [
’relation’ => ‘AND’,
];
// 開催エリア
if(!empty($_GET[‘pref‘])) {
$meta_query[] = array(
’key’ => ‘love_pref‘,
’value’ => $_GET[‘pref’],
’compare’ => ‘=’
);
}
$query->set(‘meta_query’, $meta_query);
// 開催日
if(!empty($_GET[‘date’])) {
$meta_query[] = array(
’key’ => ‘love_search_date‘,
’value’ => $_GET[‘date‘],
’compare’ => ‘=’
);
}
$query->set(‘meta_query’, $meta_query);
}
}
add_action( ‘pre_get_posts’, ‘change_pre_get_posts’ );
Leave a Comment