2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WordPressの有料プラグイン「Search & Filter Pro」に除外検索(NOT IN)を追加する方法

Last updated at Posted at 2019-12-17

###はじめに
複数条件検索を実装できる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行目に以下の記述がある。

tag.php
<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」という選択肢が加わる。
スクリーンショット 2019-12-17 22.18.19.png

tag.php
<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を直接いじるのでバックアップ等は必ず取っておくこと

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?