\SearchWP\Source
Indice
\SearchWP\Source è una classe astratta progettata per modellare i tipi di contenuto per i processi di indicizzazione e ricerca di SearchWP. I \SearchWP\Source vengono aggiunti agli Engine che a loro volta vengono utilizzati quando si istanzia un \SearchWP\Query.
In SearchWP sono disponibili per impostazione predefinita diversi \SearchWP\Source principali, tra cui:
- Ogni Tipo di Post registrato
- Utenti
Poiché questi \SearchWP\Source sono disponibili per impostazione predefinita, possono essere utilizzati immediatamente durante la configurazione dei tuoi Engine.
Utilizzo di base
Puoi creare i tuoi \SearchWP\Source per adattarli a qualsiasi tipo di contenuto personalizzato che hai (inclusi quelli con tabelle di database personalizzate) utilizzando questa classe e l'hook searchwp\sources.
| <?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; | |
| } ); | |
| } ); |
Nota: Qualsiasi \SearchWP\Source registrato può anche essere rimosso utilizzando l'hook searchwp\sources.
Argomenti
Non ci sono argomenti quando si istanzia un nuovo \SearchWP\Source.
Proprietà
Quando si estende \SearchWP\Source ci sono diverse proprietà da considerare.
name(string)- Un nome univoco. (predefinito:
'') labels(array)- Etichette, array con chiavi
singulareplural. (predefinito:[]) db_table(string)- La tabella del database utilizzata per archiviare le voci da indicizzare. (predefinito:
'') db_id_column(string)- La colonna del database utilizzata per tracciare gli ID delle voci. (predefinito:
'') attributes(array)- Singoli
Attributeper ricevere un peso di rilevanza durante la configurazione di questo Source in un Engine. (predefinito:[]) - Array di
Attributeo array di impostazioni di Attributo, ciascuno con le seguenti chiavi: 'name'(string) Nome dell'Attributo.'label'(string) Etichetta dell'Attributo.'default'(integer) Peso predefinito (zero per omettere come predefinito).'options'(array) Opzionale. Definisce istanze individuali di questo Attributo.'data'(mixed) Definisce i dati per questo Attributo durante l'istanziazione di una Entry.- – 1° parametro è l'ID della voce come da
$db_id_column - – 2° parametro (quando applicabile) è l'
optionscelta daoptions rules(array)- Singole
Regoleper controllare l'idoneità delle Voci come risultati di ricerca. (default:[]) - Array di
Regoleo array di impostazioni di Regola, ciascuno con le seguenti chiavi: 'name'(string) Nome della Regola.'label'(string) Etichetta della Regola.'options'(array) Opzionale. Definisce le singole opzioni per questa Regola.'conditions'(array) Opzionale. Definisce le singole condizioni di questa Regola.'values'(array) Opzionale. Definisce i valori per ciascuna opzione di questa Regola.'application'(mixed) Applica la logica della regola.- – Il 1° parametro contiene le proprietà della regola come array
optionL'opzione sceltaconditionLa condizione sceltavalueIl valore scelto
Metodi
Quando si estende \SearchWP\Source ci sono una serie di metodi da considerare.
db_where(restituiscearray)- Array di array di clausole
WHEREche devono essere soddisfatte sia per l'indicizzazione che per la ricerca. (default:[]) 'column'(string) Colonna del database'value'(mixed) Valore'type'(string) Tipo di valore/i, può essere'CHAR'o'NUMERIC''compare'(string) Metodo con cui confrontarevalue- I tipi di confronto disponibili includono:
'=','!=','>','>=','<','<=','LIKE','NOT LIKE','IN','NOT IN','BETWEEN','NOT BETWEEN','EXISTS','NOT EXISTS' entry(restituiscemixed)- Quando viene trovato un risultato di ricerca, questo metodo viene attivato per recuperare una rappresentazione nativa di quel risultato. (default:
stdClass) - – Il 1° parametro è la
\SearchWP\Entryche è stata trovata - – Il 2° parametro è la
\SearchWP\Queryche ha trovato questo risultato (se applicabile) add_hooks- Attivato all'inizializzazione di questa Sorgente. Utilizzato principalmente per implementare hook per facilitare gli aggiornamenti di
\SearchWP\Index\Controllerman mano che il contenuto viene modificato.
Hook
Ci sono una serie di hook disponibili per modificare ulteriormente il comportamento di \SearchWP\Source:

