\SearchWP\Source
Inhaltsverzeichnis
\SearchWP\Source ist eine abstrakte Klasse, die dazu dient, Inhaltstypen für die Indexierungs- und Suchprozesse von SearchWP zu modellieren. \SearchWP\Sources werden zu Engines hinzugefügt, die wiederum beim Instanziieren eines \SearchWP\Query verwendet werden.
In SearchWP stehen standardmäßig eine Reihe von Kern-\SearchWP\Sources zur Verfügung, darunter:
Da diese \SearchWP\Sources standardmäßig verfügbar sind, können sie sofort bei der Konfiguration Ihrer Engines verwendet werden.
Grundlegende Verwendung
Sie können Ihre eigenen \SearchWP\Sources erstellen, um alle benutzerdefinierten Inhaltstypen, die Sie haben (einschließlich solcher mit benutzerdefinierten Datenbanktabellen), abzugleichen, indem Sie diese Klasse und den searchwp\sources Hook verwenden.
| <?php | |
| // @link https://searchwp.com/documentation/classes/searchwp-source/ | |
| /** | |
| * Adds custom SearchWP\Source for MyCustomSearchWPSource which uses a custom database table. | |
| */ | |
| add_action( 'plugins_loaded', function() { | |
| class MyCustomSearchWPSource extends \SearchWP\Source { | |
| // Unique name for this Source. | |
| protected $name = 'mycustomsource'; | |
| // Database column name that provides a unique ID for each entry of the Source. | |
| protected $db_id_column = 'id'; | |
| function __construct() { | |
| global $wpdb; | |
| // The database table storing entries. | |
| $this->db_table = $wpdb->get_blog_prefix() . 'my_db_table'; | |
| // Labels for this Source. | |
| $this->labels = [ | |
| 'plural' => 'My Custom Source Entries', | |
| 'singular' => 'My Custom Source Entry', | |
| ]; | |
| // Attributes for this Source. Array of attributes, can be expanded. | |
| $this->attributes = [ [ | |
| 'name' => 'content', | |
| 'label' => 'Entry Content', | |
| 'default' => \SearchWP\Utils::get_min_engine_weight(), | |
| 'data' => function( $entry_id ) { | |
| // Note: MyWidget is an pseudo-class meant to represent | |
| // a class you're using that represents something like | |
| // WP_Post in that it models the data you are working with. | |
| // Long story short: this method should return the content | |
| // you want to index and make searchable in SearchWP. | |
| return MyWidget::get_content( $entry_id ); | |
| }, | |
| ], ]; | |
| } | |
| // Returns a native object e.g. formatted in a way you expect. | |
| public function entry( \SearchWP\Entry $entry, $query = false ) { | |
| // Note: MyWidget is a pseudo-class meant to represent a class | |
| // you're using that represents something like WP_Post in that it | |
| // models the data you're working with. | |
| // Long story short: this method should return whatever it is you | |
| // expect when working 'natively' with your data e.g. for WordPress | |
| // pages a WP_Post is returned. Note that $entry->get_id() returns | |
| // the value in the $db_id_column for this Source. | |
| return new MyWidget( $entry->get_id() ); | |
| } | |
| } | |
| // Append this Source to the list of available Sources in SearchWP. | |
| add_filter( 'searchwp\sources', function( $sources ) { | |
| $sources[] = new MyCustomSearchWPSource(); | |
| return $sources; | |
| } ); | |
| } ); |
Hinweis: Jeder registrierte \SearchWP\Source kann auch mithilfe des searchwp\sources Hooks entfernt werden.
Argumente
Beim Instanziieren eines neuen \SearchWP\Source gibt es keine Argumente.
Eigenschaften
Beim Erweitern von \SearchWP\Source sind eine Reihe von Eigenschaften zu beachten.
name(string)- Ein eindeutiger Name. (Standard:
'') labels(array)- Labels, Array mit den Schlüsseln
singularundplural. (Standard:[]) db_table(string)- Die Datenbanktabelle, die zum Speichern von zu indexierenden Einträgen verwendet wird. (Standard:
'') db_id_column(string)- Die Datenbankspalte, die zur Verfolgung von Eintrags-IDs verwendet wird. (Standard:
'') attributes(array)- Individuelle
Attribute, die bei der Konfiguration dieser Quelle in einer Engine ein Relevanzgewicht erhalten. (Standard:[]) - Array von
Attributen oder Attribut-Einstellungsarrays, jeweils mit den folgenden Schlüsseln: 'name'(string) Attributname.'label'(string) Attributbezeichnung.'default'(integer) Standardgewicht (null zum Weglassen als Standard).'options'(array) Optional. Definiert einzelne Instanzen dieses Attributs.'data'(mixed) Definiert die Daten für dieses Attribut beim Instanziieren eines Eintrags.- – 1. Parameter ist die Eintrags-ID gemäß
$db_id_column - – 2. Parameter (falls zutreffend) ist die gewählte
optionausoptions rules(array)- Individuelle
Regeln zur Steuerung der Kandidatur von Einträgen als Suchergebnisse. (Standard:[]) - Array von
Regeln oder Regel-Einstellungs-Arrays, jeweils mit den folgenden Schlüsseln: 'name'(string) Regelname.'label'(string) Regelbezeichnung.'options'(array) Optional. Definiert individuelle Optionen für diese Regel.'conditions'(array) Optional. Definiert individuelle Bedingungen dieser Regel.'values'(array) Optional. Definiert Werte für jede Option dieser Regel.'application'(mixed) Wendet die Regel-Logik an.- – Der 1. Parameter enthält die Eigenschaften der Regel als Array
optionDie gewählte OptionconditionDie gewählte BedingungvalueDer gewählte Wert
Methoden
Beim Erweitern von \SearchWP\Source sind eine Reihe von Methoden zu beachten.
db_where(gibtarrayzurück)- Array von
WHERE-Klausel-Arrays, die sowohl für die Indizierung als auch für die Suche erfüllt sein müssen. (Standard:[]) 'column'(string) Datenbankspalte'value'(mixed) Wert'type'(string) Typ des/der Werte, kann'CHAR'oder'NUMERIC'sein'compare'(string) Methode zum Vergleichen vonvalue- Verfügbare Vergleichstypen sind:
'=','!=','>','>=','<','<=','LIKE','NOT LIKE','IN','NOT IN','BETWEEN','NOT BETWEEN','EXISTS','NOT EXISTS' entry(gibtmixedzurück)- Wenn ein Suchergebnis gefunden wird, wird diese Methode aufgerufen, um eine native Darstellung dieses Ergebnisses abzurufen. (Standard:
stdClass) - – Der 1. Parameter ist der gefundene
\SearchWP\Entry - – Der 2. Parameter ist die
\SearchWP\Query, die dieses Ergebnis gefunden hat (falls zutreffend) add_hooks- Wird bei der Initialisierung dieser Quelle aufgerufen. Hauptsächlich verwendet, um Hooks zu implementieren, die Updates von
\SearchWP\Index\Controllererleichtern, während Inhalte bearbeitet werden.
Hooks
Es gibt eine Reihe von Hooks, um das Verhalten von \SearchWP\Source weiter zu modifizieren:

