###はじめに
複数条件検索を実装できるWordpressの有料プラグインが
1サイト$20と格安だったので購入してみた。
Search & Filter pro
https://searchandfilter.com/
カテゴリ、タグ、カスタムフィールドを自由に組み合わせて
絞り込み検索が手軽に実装になるというプラグインで、
$20にしてはかなり便利なプラグインだと思う。
(デモビデオ:Search & Filter Pro - Demo Video)
早速作成中のWordPressサイトに追加してみたが、
今回実装したかった除外検索(NOT IN)が選択肢にない...
この部分だけ直接PHPを編集して実装してみた。
###1.「プラグインエディター」を開く
「ダッシュボード」の左カラムメニュー「プラグイン」内にある
「プラグインエディター」をクリックして、
画面左上の『編集するプラグインを選択』で
「Search & Filter Pro」を選択する。
###2.phpに除外検索用のコードを追記する
例えばタグ検索の「Search Operator」に
「AND」「OR」に加えて除外検索用の選択肢を追加する場合、
search-filter-pro/admin/views/fields/tag.php
このファイルの64〜67行目に以下の記述がある。
<select name="{0}[{1}][operator]" id="{0}[{1}][operator]">
<option value="and"<?php $this->set_selected($values['operator'], "and"); ?>><?php _e("AND", $this->plugin_slug); ?></option>
<option value="or"<?php $this->set_selected($values['operator'], "or"); ?>><?php _e("OR", $this->plugin_slug); ?></option>
</select>
この部分で「Search Operator」の選択肢に応じて
ユーザーが検索した際の検索方法を指定しているので、
<option value="NOT IN"<?php $this->set_selected($values['operator'], "NOT IN"); ?>><?php _e("NOT IN", $this->plugin_slug); ?></option>
</select>
の直前に上記のコードを加えて保存するだけで、
「Search & Filter Pro」の編集画面の「Tag」に
「NOT IN」という選択肢が加わる。
<select name="{0}[{1}][operator]" id="{0}[{1}][operator]">
<option value="and"<?php $this->set_selected($values['operator'], "and"); ?>><?php _e("AND", $this->plugin_slug); ?></option>
<option value="or"<?php $this->set_selected($values['operator'], "or"); ?>><?php _e("OR", $this->plugin_slug); ?></option>
<option value="NOT IN"<?php $this->set_selected($values['operator'], "NOT IN"); ?>><?php _e("NOT IN", $this->plugin_slug); ?></option>
</select>
あとはプラグインの画面上でいい感じに絞り込み検索を作成して
除外したい項目の「Search Operator」には「NOT IN」を設定しておけば、
想定どおりの絞り込み検索を実装することができる。
###タグ以外の項目で同様の選択肢を実装したい場合は...
search-filter-pro/admin/views/fields
上記の場所に「category.php」などそれぞれのPHPファイルがあるので、
「operator」でコード内を検索してみて
「NOT IN」の<option>
タグを同様に追記すれば実装できる。
###注意点
※ PHPを直接いじるのでバックアップ等は必ず取っておくこと