Wordpressに標準装備されているキーワード検索機能は、デフォルトのままだと検索対象が『投稿タイトル』+『記事の全文』検索になっています。サイトの構成によっては、『記事タイトル』のみを検索対象としたいことがあるのではないでしょうか。
今回は、Wordpressのキーワード検索を『タイトルのみの検索』に設定する手順を紹介します。
Wordpressのデフォルト検索機能を編集するには、WPのコアファイルであるwp-includes/query.phpを編集する方法がありますが、この手法ではバージョンアップの度にファイルが上書きされるため、メンテナンスの手間がかかります。
ですので、今回はfunction.phpにフィルターを設定し、Wordpressの検索機能を書き換える方法を紹介します。
この方法でも、コアファイルquery.phpを直接カスタムした場合と同じ結果が得られます。
■function.phpに下記のコードを追加。
※functions.phpの編集は、自己責任でお願いします。心配な人は編集前にバックアップを。
//緑の文字はfunctionに対するコメントアウトです。
後日コードを誤削除してしまわないように、分かりやすいコメントでくくっておきましょう。
作業はこれだけで完了です。 functions.phpファイルを上書き更新すると、検索結果の対象がタイトルのみに変更されるはずです。
検索をデフォルトに戻したい場合は、上記のコードを削除すれば元に戻ります。
オリジナルのコードには下記の記述があり、このコードが『検索結果に記事本文(コンテンツ)を含む』というSQL文を生成しています。
なので、フィルターでこのコードを除外してあげると、検索対象から記事本文(コンテンツ部分)が除外されるということです。
この辺りのコードをいじれば、目的に合わせて詳細なカスタム検索が実装できると思います。
参考:Make wordpress search only in post title
今回は、Wordpressのキーワード検索を『タイトルのみの検索』に設定する手順を紹介します。
Wordpressのキーワード検索を『タイトル検索』にする手順
キーワード検索を『タイトルのみ』に設定するにはいくつかの方法があります。Wordpressのデフォルト検索機能を編集するには、WPのコアファイルであるwp-includes/query.phpを編集する方法がありますが、この手法ではバージョンアップの度にファイルが上書きされるため、メンテナンスの手間がかかります。
ですので、今回はfunction.phpにフィルターを設定し、Wordpressの検索機能を書き換える方法を紹介します。
この方法でも、コアファイルquery.phpを直接カスタムした場合と同じ結果が得られます。
利用中のテーマのfunction.phpに下記のコードを記述
WPメニューの『外観』→『テーマ編集』へ進み、右側のファイル名リストから『テーマのための関数(functions.php)』をクリック。functions.phpの編集画面へ進みます。■function.phpに下記のコードを追加。
//検索対象を『タイトルのみ』にする
function __search_by_title_only( $search, &$wp_query )
{
global $wpdb;
if ( empty( $search ) )
return $search; // skip processing - no search term in query
$q = $wp_query->query_vars;
$n = ! empty( $q['exact'] ) ? '' : '%';
$search =
$searchand = '';
foreach ( (array) $q['search_terms'] as $term ) {
$term = esc_sql( like_escape( $term ) );
$search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
$searchand = ' AND ';
}
if ( ! empty( $search ) ) {
$search = " AND ({$search}) ";
if ( ! is_user_logged_in() )
$search .= " AND ($wpdb->posts.post_password = '') ";
}
return $search;
}
add_filter( 'posts_search', '__search_by_title_only', 500, 2 );
//検索対象を『タイトルのみ』にする-終了//緑の文字はfunctionに対するコメントアウトです。
後日コードを誤削除してしまわないように、分かりやすいコメントでくくっておきましょう。
作業はこれだけで完了です。 functions.phpファイルを上書き更新すると、検索結果の対象がタイトルのみに変更されるはずです。
検索をデフォルトに戻したい場合は、上記のコードを削除すれば元に戻ります。
WP『タイトル検索』用コードの解説
Wordpressの検索用のメイン関数は、query.phpファイルの2190行辺りに記述されています。オリジナルのコードには下記の記述があり、このコードが『検索結果に記事本文(コンテンツ)を含む』というSQL文を生成しています。
OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}'))";なので、フィルターでこのコードを除外してあげると、検索対象から記事本文(コンテンツ部分)が除外されるということです。
この辺りのコードをいじれば、目的に合わせて詳細なカスタム検索が実装できると思います。
参考:Make wordpress search only in post title
- カテゴリ:
- この記事のカテゴリ:Wordpress

の記事の通りに自分のブログにコピーをしたらphpエラーが発生しログインできなくなりました。
元に戻す方法を教えて頂けないでしょうか?
宜しくお願いします。