
以前、WordPressの検索がいたずらされるため無効にしたのですが、管理画面の投稿一覧にある検索も使えなくなって不便になってしまいました。そこで制限付きで有効にする方法を考えてみました。
方法として「ローカルIPでアクセスした場合は有効にする。」というのが理想です。ですが、プログラムには疎いので苦肉の策としてサーバ自身からのアクセスのみ検索を許可するという方法にしました。
子テーマの functions.php へ追記したコードに赤いラインを追記するだけです。
function wpb_filter_query( $query, $error = true ) {
if ( is_search() ) {
if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR']) {
$query->is_search = false;
$query->query_vars[s] = false;
$query->query[s] = false;
if ( $error == true )
$query->is_404 = true;
}
}
}
add_action( 'parse_query', 'wpb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );
単純にサーバIP以外でアクセスした場合は検索を許可しないということです。ですが、これでは自宅のPCからアクセスしても検索できませんので、サーバにProxy Serverをたててアクセスすることで解決させます。
ローカルIPを判定するコードが書ければいいんですけど、いまのところはこれで済ませておきます。

コメント