SearchWP Documentation

Sehen Sie sich die Installationsanleitung an, durchsuchen Sie die Wissensdatenbank und erfahren Sie mehr über die vielen Hooks von SearchWP

\SearchWP\Mod

\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:

  1. Ein Array von \SearchWP\Mod kann mit dem 'mods' Argument an \SearchWP\Query übergeben werden.
  2. Verwendung des searchwp\query\mods Hooks.

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.
view raw functions.php hosted with ❤ by GitHub

Wenn kein $source angegeben wird, werden beim Instanziieren sinnvolle Standardwerte intern behandelt.

source (string)
Der name des \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 JOIN SQL.
raw_join_sql( $sql )
Fügt eine rohe JOIN SQL-Klausel hinzu.
get_raw_join_sql()
Getter für rohe JOIN SQL-Klauseln.
raw_where_sql( $sql )
Fügt eine rohe WHERE SQL-Klausel hinzu.
get_raw_where_sql()
Getter für rohe WHERE SQL-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.

Erstellen Sie noch heute eine bessere WordPress-Sucherfahrung

Verlieren Sie nie wieder Besucher an unzureichende Suchergebnisse. SearchWP macht die Erstellung Ihrer eigenen intelligenten WordPress-Suche schnell und einfach.

Get SearchWP Now
Symbol für mehrere Suchmaschinen