検索プラグイン Search & Filter の「empty_search_url」がきかないのでJavaScriptでボタンを無効にするコード
WordPressの検索プラグインのSearch & Filterがとても有益ですが、何も入力しないで検索ボタンを押すとトップページに遷移してしまう現象に遭遇しました。
こちらの対応方法を記録しておきたいと思います。
Search & Filter公式サイトの情報
この現象に直面した際、こんな初歩的なバグを放置するわけがないだろうと、公式のドキュメントを確認してみたところ「empty_search_url
」なるパラメーターを発見。
empty_search_url | デフォルト値:なし | Any URL or ommit for default behaviour 訳:任意の URL、またはデフォルト動作の省略 | When a users submits the search form without any search preferences selected (a blank search) they will be redirected to this URL 訳:ユーザーが検索設定を何も選択せずに (空白の検索) 検索フォームを送信すると、この URL にリダイレクトされます。 |
ユーザーが検索設定を何も選択せずに (空白の検索) 検索フォームを送信すると、この URL にリダイレクトされます。
まさに欲しかったのがこれ。早速以下のように設定してみた。
[searchandfilter empty_search_url="https://yahoo.co.jp" post_types="works" fields="bath,place,kind" types="checkbox,checkbox,checkbox" submit_label="検索" search_placeholder="キーワード" hide_empty="0" show_count="1,1,1"]
結果は反応なし。無料なので文句はいえないが「それでいいのか」と思ってしまうのは私だけではないはず。
応急処置
いろいろ調べてはみたものの、有力な情報もみつからず、とはいえこれ以上時間もかけていられない。
もしかしたらバージョン固有のバグか、もしくは何らかの設定が抜けているだけの可能性もある。
ここはJavaScriptの応急処置で切り抜けたいと思う。
そのソースがこちら。
jQuery(function($){
/**
* 検索が入力されていないと無効
*/
let searchFilter = $(".searchandfilter");
if (searchFilter.length > 0) {
$(".searchandfilter input[type=submit]").on("click", function(){
let checked_objs = $(".searchandfilter input:checked");
if (checked_objs.length == 0) {
return false;
}
});
}
});
何も入力されていない時は検索ボタンを無反応にするだけ・・・
今回はチェックボックスだけだったので、テキストボックスやセレクトボックスがある場合は追加が必要です。
正しい対処法が見つかり次第、こちらに追記したいと思います。