SearchWP Documentation

インストールガイドを表示したり、ナレッジベースを参照したり、SearchWPの多くのフックについて確認したりできます。

検索結果をソース(投稿タイプ)ごとにグループ化し、順序を設定する

デフォルトでは、SearchWPはエンジン内のすべてのソースから関連性の重みで降順にランク付けされた結果を返します。

場合によっては、ソース別に結果をグループ化し、各ソースグループ内で関連性によって結果を並べ替えると便利です。

これを実現するために、\SearchWP\Mod を利用できます。

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Group SearchWP results by Source, sort by relevance within each Source group.
// @link https://searchwp.com/documentation/knowledge-base/group-results-by-source-post-type/
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
$mod = new \SearchWP\Mod();
$mod->order_by( function( $mod ) {
// Search results should be grouped by Sources in this order.
// NOTE: _ALL_ Engine Sources must be included here!
$source_order = [
'user',
\SearchWP\Utils::get_post_type_source_name( 'post' ),
\SearchWP\Utils::get_post_type_source_name( 'page' ),
];
return "FIELD({$mod->get_foreign_alias()}.source, "
. implode( ',', array_filter( array_map( function( $source_name ) {
global $wpdb;
return $wpdb->prepare( '%s', $source_name );
}, $source_order ) ) ) . ')';
}, '', 1 );
$mods[] = $mod;
return $mods;
}, 10, 2 );

注意: このカスタマイズを完全に有効にするには、$source_order 配列を(希望する順序で)ソース名でカスタマイズする必要があり、エンジンソースのすべてを含める必要があります。

上記のコードスニペットは、投稿タイプのSearchWPの内部ソース名を取得するためのユーティリティ関数を参照しています。ユーザーソースはuserという名前で、その他のソース名も含まれている必要があります。

この並べ替えを条件付きで適用したい場合は、$query 変数を調べて、早期に終了するか、\SearchWP\Mod を返して適用するかどうかを判断できます。

関連項目:特定の投稿タイプを他のすべての投稿タイプより上に表示する

今日からより良いWordPress検索エクスペリエンスを作成しましょう

役に立たない検索結果で訪問者を失うことはもうありません。SearchWPを使用すると、独自のスマートなWordPress検索をすばやく簡単に作成できます。

Get SearchWP Now
複数の検索エンジンアイコン