ご指摘ありがとうございます。ローカルでミラーサイトを作るなどして対応しようと思っています。
データベースエラーは一応解消されましたので、解決済みとさせていただきます。
どうもありがとうございました。
公開中のサイトなので、すぐにはデバッグモードにできないのですが、Debug Barプラグインでcチェックすると、データベースエラーは出ていないのですが実行されたSQL文は上記のSELECT DISTINCT以下と同様でした。
はい、固定ページや投稿、カスタム投稿はWordPressのクエリを使っていますが、WordPressのクエリは使わずに自作テーブルへの検索用テンプレートには自分でSQL文を作って実行しています。
ありがとうございます。
search.php の振り分け前にエスケープのためのコードを記述していたのですがうまくいかず、function.php に init のフックとして以下のように記述すると、エラーは表示されなくなりました。
function escape_single_quote_search_query() {
$_GET['s'] = trim( $_GET['s'] );
if ( isset( $_GET['s'] ) ) {
if (preg_match("/'/", $_GET['s'])) {
$_GET['s'] = str_replace("'", "'", $_GET['s']);
}
}
}
add_action( 'init', 'escape_single_quote_search_query' );
ただ、
実際はヒットするデータがあっても、検索結果には出てこないのです。
(検索対象テーブルに「h's」とあっても出てこない)
表示されなくなったエラーも、これで解決したのかどうか不安です。
どうすればいいのでしょうか。。