サイト編集中

【WordPress】サイト内検索を記事タイトルの文字を上位表示する方法

TAGS:

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

しかし、子テーマの「functions.php」に下記コードをコピペするだけで、記事タイトルの文字を優先的に上位表示することができたので、備忘録として残しておきます。

before画像after画像

やり方

下記コードを「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」を開き、上記のコードをコピーして「ファイルを更新」すると完了です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です