【WordPress】プラグインSearch Everything

プラグインを有効化すると、管理画面の投稿一覧ページなどの右上「検索」が不調なので調べてみました。

このプラグインは、サイト内検索機能をカスタムフィールドやタグなども検索対象にしてくれる便利なプラグインです。
 
今回は、管理画面への影響について。
投稿一覧などの一覧ページで、単純に、検索フィールドをブランクのまま「検索」すると、通常は全件表示されますが、こちらのプラグインを有効化すると0件になり検索フィールドも消えてしまいます。
 
PHPエラーログを見ると、クエリでエラーになっていることが分かりました。

codeデータベースエラー: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))) AND wp_posts.post_type = 'post' ......

このとき、queryには、where 1=1 AND ((())) AND .... のようなSQL文になっていました。
→MySQLのバージョンでSQL分がエラーになるのではなく、((())) がまずい、ということ。

サイト内検索では、?s= でキーワードをgetします。
このキーワードが、
・タグの場合
・カテゴリーの場合
・カスタムフィールドの場合
・抜粋の場合
・コメントの場合
・作成者の場合
...

と様々に分岐しwhere句を作成していくのですが、キーワード入力のない場合の判断(→初期状態)がまずいようで、入力しない状態でボタン押下(form送信)すると、SQLのwhere句に「((()))」という文字列が出力される現象が。。。

search-everything.php LINE 278~//if ( $searchQuery != '' ) { //変更前
if ( $searchQuery != '()' ) { //変更後
// lets use _OUR_ query instead of WP's, as we have posts already included in our query as well(assuming it's not empty which we check for)
$where = " AND ((" . $searchQuery . ")) ";
}

上記のソース変更でうまくいったようです♪♪♪

こちだもどうぞ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です