概要
the_search_queryフィルタは、WordPressにおける検索キーフレーズをフィルタリングに利用される機能です。このフィルタは、検索フォームに入力されたキーワードやフレーズをプラグインやテーマが変換、操作、または検証できるようにするために広く使用されます。具体的には、次のような目的で使用されることが多いです。
- 検索キーフレーズの正規化(例:特殊文字の削除)
- 検索キーワードのマスキング(プライバシーのため)
- 特定のキーワードの追加または変更
- ユーザーのリクエストに基づくコンテンツのフィルタリング
- トップセール商品などの特定項目を優先するためのキーワード変換
- 検索機能のカスタマイズ(特定条件付き)
- スペルチェックやシノニム検索の実装
- 検索キーフレーズのロギングや分析
構文
add_filter( 'the_search_query', 'your_function_name' );
パラメータ
string $search_query:元の検索クエリ。
戻り値
string:フィルタリング後の検索クエリ。
関連する関数
使用可能なバージョン
- 初めて導入されたバージョン: 2.1.0
コアファイルのパス
wp-includes/query.php
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | 〇 |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | 〇 |
| wp | 〇 |
| template_redirect | |
| get_header | |
| wp_head |
サンプルコード
以下に、the_search_queryフィルタのサンプルコードを示します。
サンプルコード 1
add_filter( 'the_search_query', 'custom_search_query' );
function custom_search_query( $search_query ) {
return sanitize_text_field( $search_query );
}
このコードは、検索クエリをサニタイズして、特殊文字や不正な文字を除去します。
サンプルコード 2
add_filter( 'the_search_query', 'append_custom_keyword' );
function append_custom_keyword( $search_query ) {
return $search_query . ' +specialkeyword';
}
このコードは、元の検索クエリに特定のキーワードを追加します。
サンプルコード 3
add_filter( 'the_search_query', 'remove_special_chars' );
function remove_special_chars( $search_query ) {
return preg_replace('/[^a-zA-Z0-9s]/', '', $search_query);
}
このコードは、アルファベットと数字、スペース以外の文字を削除します。
サンプルコード 4
add_filter( 'the_search_query', 'log_search_query' );
function log_search_query( $search_query ) {
error_log( 'Search Query: ' . $search_query );
return $search_query;
}
このコードは、検索クエリをログに記録します。
サンプルコード 5
add_filter( 'the_search_query', 'replace_synonyms' );
function replace_synonyms( $search_query ) {
if (strpos($search_query, 'iphone') !== false) {
return str_replace('iphone', 'smartphone', $search_query);
}
return $search_query;
}
このコードは、「iphone」という単語を「smartphone」に置換します。