Advanced Custom Fieldsの値で絞込検索を実装する(プラグインなし)

スポンサーリンク

Advanced Custom Fields(ACF)の値で絞り込み検索を実装したので備忘録として残します。

世の中にはカスタムフィールドの値を検索できるプラグインはたくさんありますが、継続したサポートを行っていないプラグインはWordpressのアップデートされたタイミングで使えなくなるリスクがあります。個人的には仕事として受けた案件なら極力使いたくないです。後々面倒なことになりそうなので。

有料プラグインのFE Advanced SearchもACFには対応していないようです。( ACF対応でしっかりとサポートされている検索プラグインあるなら知りたい)

ACFの値で絞込検索機能を実現するには、アクションフック「pre_get_posts」でメインクエリーの検索条件を変更することで実現できました。

Advanced Custom Fieldsの設定値

今回は、「 基本情報 」フィールドを作成し、フィールドタイプを「 Group 」にして、サブフィールドには「勤務地(都道府県)」「募集職種」「雇用形態」などのフィールドを作成しています。

検索フォームのHTML

検索対象とする「勤務地(都道府県)」「募集職種」「雇用形態」の項目で検索フォームを作成。

職種と雇用形態のチェックボックスはOR検索で実装していきます。

functions.phpに記述するメインクエリを書き換える処理

functions.phpにアクションフック「pre_get_posts」を使ってメインクエリを書き換えます。

肝は「$query->set(‘meta_query’, 【カスタムフィールドの条件】);」です。

meta_queryの指定方法はこちらが参考になりました。

meta_queryのkeyに何を入れればいいのかを調べる

meta_queryの「key」に指定する値はデータベースのwp_postmetaテーブルのmeta_keyの値を見ればわかります。

条件分岐の一例

今回は「if( $query->is_post_type_archive( ‘jobs’ ) ) {… 」でカスタム投稿タイプの名前が「jobs」のものだけに条件を適用しています。条件分岐タグは色々用意されているので、詳しくは参考サイトを見てみてください。

参考:qiita.com/_ruka_/items/e14280d34eddf49efad1
参考:公式ドキュメント|条件分岐タグ

Wordpress
スポンサーリンク
adminをフォローする
STOCKCODE
タイトルとURLをコピーしました