WordPress

Advanced Custom Fieldsの値で絞り込み検索を実装する【WordPress】

街コンの開催情報をスクレイピングしてWordPressのカスタム投稿で投稿したものを例に、プラグイン「Advanced Custom Fields」の値で絞り込み検索を実装します。

今回は都道府県と日付で絞り込み検索できるようにしました。

ACFの値で絞り込み検索

まず事前に必要な情報を確認しておきます。

・カスタム投稿タイプ名
・都道府県のカスタムフィールド名
・日時のカスタムフィールド名
・都道府県選択フォームのname
・日付選択フォームのname

今回の場合だと、それぞれ以下のようになります。

・カスタム投稿名 → love
・都道府県のカスタムフィールド名 → love_pref
・日時のカスタムフィールド名 → love_search_date
・都道府県選択フォームのname → pref
・日付選択フォームのname → date

index.php
<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>
functions.php
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