SearchWP Documentation

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

\SearchWP\Mod

\SearchWP\Mod オブジェクトは、\SearchWP\Query を変更するために使用されます。

\SearchWP\Mod は単一の変更を実装し、任意の数の \SearchWP\Mod を同時に使用できます。

\SearchWP\Mod の一般的なユースケースには以下のようなものがあります。

  • カスタムパラメータに基づいて結果の関連性重み計算を変更する。
  • カスタム基準に基づいて返される結果(または返されない結果)を制御する。
  • カスタム基準を実装するために、カスタムデータベーステーブルと JOIN する。

より具体的には、投稿、固定ページ、カスタム投稿タイプに関連して、\SearchWP\Mod は以下に使用できます。

  • 特定のカテゴリの結果に限定する。
  • 特定のタグを持つ結果を除外する。
  • より最近の公開日により多くの重みを与える。
  • 特定のカスタムフィールドを持つ投稿のメタ値に基づいて重みブーストを実装する。
  • 特定のタームを持つ投稿にボーナスウェイトを追加する。

\SearchWP\Mod は、カスタム SQL を記述することなく \SearchWP\Query と対話することを可能にしますが、\SearchWP\Mod を組み立てる際に適用可能な場合はカスタム SQL を記述したり、\SearchWP\Query フックを使用したりすることもできます。

関連項目: インデックスとソースの Mod の比較

基本的な使い方

\SearchWP\Mod の使用法はユースケースによって異なりますが、実装は次の 2 つの方法のいずれかで行われます。

  1. \SearchWP\Mod の配列を 'mods' 引数を使用して \SearchWP\Query に渡すことができます。
  2. searchwp\query\mods フックを使用する。

例として、この \SearchWP\Mod は投稿 145211 を検索結果から除外します。

<?php
// @link https://searchwp.com/documentation/classes/searchwp-mod/
$source = \SearchWP\Utils::get_post_type_source_name( 'post' );
$mod = new \SearchWP\Mod( $source );
$mod->set_where( [ [
'column' => 'id',
'value' => [ 145, 211 ],
'compare' => 'NOT IN',
'type' => 'NUMERIC',
] ] );

\SearchWP\Mod を記述したら、次のステップは上記の 2 つのステップのいずれかに従って実装することです。

独自の \SearchWP\Query を構築している場合は、この \SearchWP\Mod'mods' 引数で渡すことができます。

<?php
// @link https://searchwp.com/documentation/classes/searchwp-mod/
// Retrieve Source name to use with Mod.
$source = \SearchWP\Utils::get_post_type_source_name( 'post' );
// Build Mod to exclude Post ID 145 and Post ID 211.
$mod = new \SearchWP\Mod( $source );
$mod->set_where( [ [
'column' => 'id',
'value' => [ 145, 211 ],
'compare' => 'NOT IN',
'type' => 'NUMERIC',
] ] );
// Execute search for 'coffee' using Mod.
$search = new \SearchWP\Query( 'coffee', [
'mods' => [ $mod ],
] );
$results = $search->results; // Array of results.

または、searchwp\query\mods フックを使用して \SearchWP\Mod をエンキューすることもできます。

注意: この方法を使用すると、追加のコードを記述してそれを防がない限り、この \SearchWP\Modすべての検索に適用されます。

<?php
// @link https://searchwp.com/documentation/classes/searchwp-mod/
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
// Retrieve Source name to use with Mod.
$source = \SearchWP\Utils::get_post_type_source_name( 'post' );
// Build Mod to exclude Post ID 145 and Post ID 211.
$mod = new \SearchWP\Mod( $source );
$mod->set_where( [ [
'column' => 'id',
'value' => [ 145, 211 ],
'compare' => 'NOT IN',
'type' => 'NUMERIC',
] ] );
$mods[] = $mod;
return $mods;
}, 20, 2 );
// Execute search for 'coffee' using Mod enqueued above.
$search = new \SearchWP\Query( 'coffee' );
$results = $search->results; // Array of results.

\SearchWP\Mod をエンキューするために searchwp\query\mods フックを使用すると、ネイティブ検索中に適用できます。

引数

\SearchWP\Mod には、オプションの単一の引数 $source があります。

$source が定義されている場合、一部の動作(例: WHERE 句)は、その特定の $source のロジックに自動的に制限されます。

$source が指定されていない場合、その動作はインデックスに適用されます。

詳細については、インデックスとソースのモッドの比較を参照してください。

$source は、\SearchWP\Sourcename または \SearchWP\Source 自体のいずれかです。

注意: WP_Post Source を扱う場合、このユーティリティメソッドを使用して、投稿タイプ名を渡すことで Source name を取得できます。

<?php
// @link https://searchwp.com/documentation/classes/searchwp-mod/
// Retrieve the Source name for a Post Type:
$source = \SearchWP\Utils::get_post_type_source_name( 'post' ); // Posts.
$source = \SearchWP\Utils::get_post_type_source_name( 'page' ); // Pages.
$source = \SearchWP\Utils::get_post_type_source_name( 'movie' ); // Custom Post Type.
view raw functions.php hosted with ❤ by GitHub

$source が指定されていない場合、インスタンス化中に内部で適切なデフォルトが処理されます。

source (string)
\SearchWP\Sourcename (デフォルト: null

メソッド

relevance( $sql )
関連性計算句を追加します。
weight( $sql )
重み計算句を追加します。注意: relevance() とは異なり、重み計算は検索一致数に掛けられます。
column_as( $sql, $column_name )
列変更句を追加します。
get_columns()
登録済み列のゲッター。
get_weights()
登録済み重み変更のゲッター。
get_join_sql()
生成された JOIN SQL のゲッター。
raw_join_sql( $sql )
生の JOIN SQL 句を追加します。
get_raw_join_sql()
生の JOIN SQL 句のゲッター。
raw_where_sql( $sql )
生の WHERE SQL 句を追加します。
get_raw_where_sql()
生の WHERE SQL 句のゲッター。
get_source()
適用可能な \SearchWP\Source のゲッター。
set_where( $where )
WHERE 句のセッター。
get_where()
WHERE句のゲッター。
set_local_table( string $table )
ローカルテーブル名のセッター。
get_local_table()
ローカルテーブル名のゲッター。
set_local_table_alias( string $table )
ローカルテーブルエイリアスのセッター。
get_local_table_alias()
ローカルテーブルエイリアスのゲッター。
set_foreign_alias( string $alias )
外部テーブルエイリアスのセッター。
get_foreign_alias()
外部テーブルエイリアスのゲッター。
on( string $local, array $foreign )
ON句を追加します。
get_on()
ON句のゲッター。
order_by( $column, $direction, $priority )
ORDER BY句を追加します。
get_order_by()
ORDER BY句のゲッター。
set_values( array $values )
実行時にエスケープされるSQLプレースホルダー値のセッター。
get_values()
SQLプレースホルダー値のゲッター。

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

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

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