\SearchWP\Mod
Inhaltsverzeichnis
\SearchWP\Mod Objekte werden verwendet, um eine \SearchWP\Query zu modifizieren.
Jeder \SearchWP\Mod implementiert eine einzelne Modifikation, und eine beliebige Anzahl von \SearchWP\Mods kann gleichzeitig verwendet werden.
Einige gängige Anwendungsfälle für \SearchWP\Mods sind:
- Ändern der Relevanzgewichtungsberechnung von Ergebnissen basierend auf benutzerdefinierten Parametern.
- Steuern, welche Ergebnisse basierend auf benutzerdefinierten Kriterien zurückgegeben werden (oder nicht).
JOINen mit benutzerdefinierten Datenbanktabellen zur Implementierung benutzerdefinierter Kriterien.
Spezieller in Bezug auf Beiträge, Seiten und benutzerdefinierte Beitragstypen können \SearchWP\Mods verwendet werden, um:
- Ergebnisse auf die in einer bestimmten Kategorie befindlichen zu beschränken.
- Ergebnisse mit einem bestimmten Tag auszuschließen.
- Kürzlich veröffentlichten Beiträgen zusätzliches Gewicht zu geben.
- Einen Gewichtungsbonus basierend auf einem Meta-Wert für Beiträge mit einem bestimmten benutzerdefinierten Feld zu implementieren.
- Bonuspunkte für Beiträge hinzuzufügen, die einen bestimmten Taxonomiebegriff haben.
\SearchWP\Mods ermöglichen die Interaktion mit einer \SearchWP\Query, ohne benutzerdefiniertes SQL schreiben zu müssen, obwohl dies, wo anwendbar, beim Zusammenstellen eines \SearchWP\Mod oder durch die Verwendung eines \SearchWP\Query Hooks erfolgen kann.
Siehe auch: Vergleich von Index- und Quell-Mods
Grundlegende Verwendung
Die Verwendung von \SearchWP\Mod variiert je nach Anwendungsfall, aber die Implementierung erfolgt auf eine von zwei Arten:
- Ein Array von
\SearchWP\Modkann mit dem'mods'Argument an\SearchWP\Queryübergeben werden. - Verwendung des
searchwp\query\modsHooks.
Als Beispiel schließt dieser \SearchWP\Mod Beiträge 145 und 211 von den Suchergebnissen aus:
| <?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', | |
| ] ] ); |
Nachdem der \SearchWP\Mod geschrieben ist, besteht der nächste Schritt darin, ihn gemäß einem der oben genannten 2 Schritte zu implementieren.
Wenn Sie Ihre eigene \SearchWP\Query erstellen, können Sie diesen \SearchWP\Mod mit dem 'mods' Argument übergeben:
| <?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. |
Alternativ können Sie den searchwp\query\mods Hook verwenden, um den \SearchWP\Mod einzubinden.
Hinweis: Wenn diese Methode verwendet wird, wird dieser \SearchWP\Mod auf alle Suchen angewendet, es sei denn, es wird zusätzlicher Code geschrieben, um dies zu verhindern.
| <?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. |
Die Verwendung des searchwp\query\mods Hooks, um einen \SearchWP\Mod einzubinden, ermöglicht die Anwendung während nativer Suchen.
Argumente
\SearchWP\Mod hat ein einzelnes, optionales Argument: $source.
Wenn ein $source definiert ist, werden einige Verhaltensweisen (z. B. WHERE-Klauseln) automatisch auf die Logik für diese spezielle $source beschränkt.
Wenn kein $source angegeben wird, gilt dieses Verhalten für den Index.
Weitere Informationen finden Sie unter Vergleich von Index- und Quell-Mods.
$source kann entweder der name eines \SearchWP\Source oder das \SearchWP\Source selbst sein.
Hinweis: Wenn Sie mit WP_Post Sources arbeiten, können Sie diese Hilfsmethode verwenden, um den Source name abzurufen, indem Sie den Post-Typ-Namen übergeben:
| <?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. |
Wenn kein $source angegeben wird, werden beim Instanziieren sinnvolle Standardwerte intern behandelt.
source(string)- Der
namedes\SearchWP\Source(Standard:null)
Methoden
relevance( $sql )- Fügt eine Klausel zur Relevanzberechnung hinzu. Beispiel
weight( $sql )- Fügt eine Klausel zur Gewichtungsberechnung hinzu. Hinweis: Im Gegensatz zu
relevance()wird die Gewichtungsberechnung mit der Anzahl der Suchtreffer multipliziert. column_as( $sql, $column_name )- Fügt eine Klausel zur Spaltenmodifikation hinzu.
get_columns()- Getter für registrierte Spalten.
get_weights()- Getter für registrierte Gewichtungsmodifikationen.
get_join_sql()- Getter für generierte
JOINSQL. raw_join_sql( $sql )- Fügt eine rohe
JOINSQL-Klausel hinzu. get_raw_join_sql()- Getter für rohe
JOINSQL-Klauseln. raw_where_sql( $sql )- Fügt eine rohe
WHERESQL-Klausel hinzu. get_raw_where_sql()- Getter für rohe
WHERESQL-Klauseln. get_source()- Getter für anwendbare
\SearchWP\Source. set_where( $where )- Setter für
WHERE-Klauseln. get_where()- Getter für
WHERE-Klauseln. set_local_table( string $table )- Setter für den lokalen Tabellennamen.
get_local_table()- Getter für den lokalen Tabellennamen.
set_local_table_alias( string $table )- Setter für den lokalen Tabellenalias.
get_local_table_alias()- Getter für den lokalen Tabellenalias.
set_foreign_alias( string $alias )- Setter für den Fremdtabellenalias.
get_foreign_alias()- Getter für den Fremdtabellenalias.
on( string $local, array $foreign )- Fügt eine
ON-Klausel hinzu. get_on()- Getter für
ON-Klauseln. order_by( $column, $direction, $priority )- Fügt eine
ORDER BY-Klausel hinzu. Beispiel get_order_by()- Getter für
ORDER BY-Klauseln. set_values( array $values )- Setter für SQL-Platzhalterwerte, die zur Laufzeit escaped werden.
get_values()- Getter für SQL-Platzhalterwerte.

