通常の「サイト内検索」をした時に、タイトルの文字より投稿日順(&記事内容)が優先され、望みの記事ページが上位表示されなく困っておりました。プラグインの「Relevanssi」や「SearchWP Live Ajax Search」を使用しても、少しだけ上位になるだけで、一番上までこず。
しかし、子テーマの「functions.php」に下記コードをコピペするだけで、記事タイトルの文字を優先的に上位表示することができたので、備忘録として残しておきます。


やり方
下記コードを「functions.php」に貼り付けて終了です。
functions.php
/*************************************************
サイト内検索のタイトル内容を上位表示させる方法
**************************************************/
function custom_search_query( $query ) { if ( $query->is_search && !is_admin() ) { global $wpdb; $search_term = $query->query_vars['s']; // カスタム検索クエリの設定 $query->set( 'orderby', 'relevance' ); $query->set( 'order', 'DESC' ); $query->set( 'posts_where', " AND ( {$wpdb->posts}.post_title LIKE '%$search_term%' OR {$wpdb->posts}.post_content LIKE '%$search_term%' ) " ); $query->set( 'posts_orderby', " CASE WHEN {$wpdb->posts}.post_title LIKE '%$search_term%' THEN 1 ELSE 2 END, {$wpdb->posts}.post_date DESC " ); }
}
add_action( 'pre_get_posts', 'custom_search_query' );
WordPress管理画面の「テーマファイルエディター」を開く
WordPress管理画面→外観→テーマファイルエディターを開く。

functions.phpに貼り付ける
子テーマの「functions.php」を開き、上記のコードをコピーして「ファイルを更新」すると完了です。

