WordPress標準の検索フォームはフリーワードのみで詳細な検索ができず、結局設置しても使われないからコンテンツから削除している方は多いのではないでしょうか?
「Ultimate WP Query Search Filter」は様々な要素でプルダウンやチェックボックスなどによる複合検索を実現することができるプラグインです。
長く更新されていないプラグインですのでPHPのバージョンによってはエラーが出ることがありますので、プラグインを有効化してフォームを追加する前に修正しておくことをお勧めします。修正箇所は文末の「フォームの追加でエラーが出るときは」を参照ください。
【Ultimate WP Query Search Filter】プラグインの基本的な機能・できること
- タクソノミー(分類)での絞り込み検索ができる
- メタデータ(カスタムフィールドなどの値)での絞り込み検索ができる
- フリーワードでの絞り込み検索ができる
- 1~3を複合させた検索フォームが作れる
- 用途に応じて複数の検索フォームが作れる
- ショートコードを使って投稿や固定ページ、サイドバーなど任意の場所にフォームが設置できる
他の同類プラグインと比べてこのプラグインの優れているところは、絞り込みが複雑に設定できることと複数のフォームが作れることです。タクソノミーのみ、メタデータのみ、フォームは1つなど限定されたプラグインはいくつかありますが、いろいろと試した結果これが一番高機能だと思います。
本記事を参考にWordPressサイトへプラグインの導入を検討される方へ
WordPressは古くから無料で配布されているサイト作成ツール(CMS)で、随時改良が加えられており、さまざまなバージョンが存在します。
さらにWordPressを動かすためのプログラムであるPHP、サイトのデータを保存しておくためのデータベースについても様々なバージョンがあります。
そしてWordPress本体同様にプラグインについてもさまざまなバージョンが存在します。
本記事を参考にプラグインの導入をお考えの方は、以下に留意の上でインストールするようにしてください。
- テスト環境での動作に基づいた紹介記事ですので、すべての環境で正常に動作するかどうかは不明です
※本記事の内容についてはページ内に記載しているプラグインバージョンのものになります。現在のバージョンと異なる場合、機能や日本語対応の状況などが異なる場合があります。
※また、テスト環境、テストしたプラグインバージョン等の表示が本文内にない場合、ページタイトル下にある最終更新日当時の情報となりますので、現在のバージョンでは全く違う機能となっているかも知れません。 - プラグインに無料版と有料版(Pro版)がある場合、特に記載がなければ無料版の情報のみを紹介しています
- このページでプラグインを使用する際に必要なショートコードやコードなどは、コピーして使用することができますが、環境によっては記号などが文字化けすることがあります。コピーしたのに動作しない場合は特に「”」「’」などの記号を入力し直してみてください。
- プラグイン本体の動作不具合や質問などは公式サイトのフォーラムなどで行ってください(ここでは質問にお答えすることはできません)
【Ultimate WP Query Search Filter】プラグインの設定画面や表示の日本語化と翻訳
当サイトで私が翻訳した【Ultimate WP Query Search Filter】プラグインの日本語化ファイルを提供しています。
翻訳ファイルは
からダウンロードできます(ダウンロードの方法や日本語の適用方法なども解説しています)
翻訳することで設定が容易になり、重要な項目の設定漏れも少なくなりますから日本語化をお勧めします。
【Ultimate WP Query Search Filter】プラグインのインストールと設定
インストール方法
インストールはプラグインの新規追加でプラグイン名を入力して検索してインストールするか、WordPressのプラグイン公式配布ページからダウンロード後、管理画面からアップロードインストールしてください(プラグインの公式ページは本ページ内記載のリンクをクリック、もしくは、WordPress公式サイトで検索してください)。
WordPressを使い始めて間もない方(初心者の方)は、より詳細なプラグインのインストール手順や、インストール時に起こる問題などへの対処方法をまとめた【WordPress】プラグインのインストール&追加方法とエラー対処の方法も併せてご覧ください。
【Ultimate WP Query Search Filter】プラグインの基本的な使い方
日本語化した後、管理画面の「検索フォーム」からフォームの作成と変更ができます
設定内容自体は日本語化してしまえば簡単にできます。
設定例としては
- カテゴリー1の中から
- 123のタグの中から
- カスタムフィールド「abc」の中から
- フリーワードで検索する
などという複雑な検索ができるようになります。
また、絞り込みも複雑に設定でき、
- カテゴリーやタブから複数条件を設定し、「全部一致」または「いずれか一致」で検索できる
- メタデータ(カスタムフィールド)から複数の条件を設定し、「全部一致」または「いずれか一致」で検索できる
といった、商品掲載サイトや何かを紹介するサイトなどでより条件に合った検索結果が得られるようなフォームを作成することができます。
プラグイン作者のサイトにあるフォーラムを見ていると動作に不具合があったり、検索結果を得られるまでに時間がかかる(サーバーに負荷がかかる可能性がある)などの記述がありますが、実際にサイトへ設置して使用してみないと環境によって印象はさまざまなようです。
公式ページのスクリーンショット
公式ページに掲載されている設定等の画像です。
検索機能としては
- フォームによる検索が簡単に作れる
- 徐々に候補が絞り込まれる機能(Ajax)が使える
ので本当にこれ1つで検索機能は大丈夫!なプラグインですが、フォームデザインについてはCSSの知識がないとちょっと残念な感じはします。
フォームの追加でエラーが出るときは
しばらく更新されていないプラグインのため使用しているサーバーによってはフォームの追加をクリックすると、エラーが表示されたり、画面が真っ白になったり(古いWordPressバージョンの場合)以下の画面が表示されることがあります
(画面はWordPressのバージョン5.2.2の場合のエラーメッセージです)
WordPress5.2以降ではエラーが発生したときにはこのメッセージとともにメールで修復方法が送信されます。
そこに記述されているエラーは以下の通りです
エラー詳細<br>===============<br>エラータイプ E_ERROR が /サーバーの場所/wp-content/plugins/ultimate-wp-query-search-filter/ultimate-wpqsf.php ファイルの 129 行目で発生しました。 エラーメッセージ: Uncaught Error: [] operator not supported for strings in /サーバーの場所/wp-content/plugins/ultimate-wp-query-search-filter/ultimate-wpqsf.php:129<br>Stack trace:<br>#0 /サーバーの場所/wp-includes/class-wp-hook.php(286): ulitmatewpsf->uwpqsf_save_from('')<br>#1 /サーバーの場所/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters(NULL, Array)<br>#2 /サーバーの場所/wp-includes/plugin.php(465): WP_Hook->do_action(Array)<br>#3 /サーバーの場所/wp-admin/admin.php(169): do_action('admin_init')<br>#4 {main}<br>thrown<br>※各メッセージ文の先頭にはサーバー内のディレクトリが記述されていますが、ここでは「サーバーの場所」としています
何がなんだか・・・ではなく重要なのは最初のメッセージです。
ultimate-wpqsf.phpの129行目でエラーが出てて、エラー内容は
Uncaught Error: [] operator not supported for strings in...
となっています。実際にこのファイルの129行目は
$cptarray[] = sanitize_text_field($cv);
となっていて、そこに使われている[]は使えませんよというエラーなんです。
多分PHPに慣れている方もしくは同様のエラーに対処した方はピーーンと来ると思いますけど、実は諸悪の根源はその前にある
$themeoption = $cptarray = $taxoarray = $cmfarray =$relarray ='';
の部分、簡単に説明するとまず「”」という空の文字列を割り当ててね!とされているのですが、PHP7.1以降ではこれが使えなくなっているのです。
で、どうするかというと・・・
$themeoption = $cptarray = $taxoarray = $cmfarray =$relarray =array();
に修正します。
※「”」を「array()」にするだけです。
これだけの修正でこの便利なプラグインは問題なく動作するようになりますからエラーが出た方は修正してみてくださいね。
ちなみにWordPress5.2以降でいきなりエラーメッセージ表示&メールが来てびっくりすると思いますけど、メールの最初に書かれている部分がエラーで、次に書かれているもの移行は「直前に行った処理」ですから主のエラーのみ対処すればOKです。