\SearchWP\Mod
Indice
Gli oggetti \SearchWP\Mod vengono utilizzati per modificare una \SearchWP\Query.
Ogni \SearchWP\Mod implementa una singola modifica e qualsiasi numero di \SearchWP\Mod può essere utilizzato contemporaneamente.
Alcuni casi d'uso comuni per i \SearchWP\Mod includono:
- Alterare il calcolo del peso di rilevanza dei risultati in base a parametri personalizzati.
- Controllare quali risultati vengono restituiti (o non restituiti) in base a criteri personalizzati.
JOINcon tabelle di database personalizzate per implementare criteri personalizzati.
Più specificamente in relazione a Post, Pagine e Tipi di Post Personalizzati, i \SearchWP\Mod possono essere utilizzati per:
- Limitare i risultati a quelli di una determinata Categoria.
- Escludere risultati con un determinato Tag.
- Dare peso extra alle date di pubblicazione più recenti.
- Implementare un aumento di peso basato sul valore meta per i post con un determinato Campo Personalizzato.
- Aggiungere peso bonus ai post che hanno un determinato termine tassonomico.
I \SearchWP\Mod consentono l'interazione con una \SearchWP\Query senza dover scrivere SQL personalizzato, sebbene ciò possa essere fatto dove applicabile quando si mette insieme un \SearchWP\Mod o utilizzando un hook di \SearchWP\Query.
Vedi anche: Confronto tra Index e Source Mods
Utilizzo di base
L'utilizzo di \SearchWP\Mod varia in base al caso d'uso, ma l'implementazione avviene in uno dei due modi:
- Un array di
\SearchWP\Modpuò essere passato a\SearchWP\Queryutilizzando l'argomento'mods'. - Utilizzando l'hook
searchwp\query\mods.
Ad esempio, questo \SearchWP\Mod esclude i Post 145 e 211 dai risultati di ricerca:
| <?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', | |
| ] ] ); |
Con il \SearchWP\Mod scritto, il passo successivo è implementarlo seguendo uno dei 2 passaggi precedenti.
Se stai creando la tua \SearchWP\Query puoi passare questo \SearchWP\Mod con l'argomento '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. |
In alternativa puoi usare l'hook searchwp\query\mods per accodare il \SearchWP\Mod.
Nota: che quando viene utilizzato questo metodo, questo \SearchWP\Mod verrà applicato a tutte le ricerche a meno che non venga scritto codice aggiuntivo per evitarlo.
| <?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. |
L'utilizzo dell'hook searchwp\query\mods per accodare un \SearchWP\Mod consente l'applicazione durante le ricerche native.
Argomenti
\SearchWP\Mod ha un singolo argomento, opzionale: $source.
Quando viene definito un $source, alcuni comportamenti (ad es. clausole WHERE) saranno automaticamente limitati alla logica per quel particolare $source.
Quando un $source non viene fornito, tale comportamento si applicherà all'indice.
Per maggiori informazioni, consulta Confronto tra Indici e Mod di Sorgente.
$source può essere il nome di un \SearchWP\Source o il \SearchWP\Source stesso.
Nota: Quando si lavora con Source di WP_Post, è possibile utilizzare questo metodo di utilità per recuperare il nome della Source passando il nome del tipo di post:
| <?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. |
Se non viene fornito alcun $source, verranno gestiti internamente valori predefiniti sensati durante l'istanziazione.
source(string)- Il
nomedel\SearchWP\Source(predefinito:null)
Metodi
relevance( $sql )- Aggiunge la clausola di calcolo della rilevanza. Esempio
weight( $sql )- Aggiunge la clausola di calcolo del peso. Nota: a differenza di
relevance(), il calcolo del peso viene moltiplicato per il numero di corrispondenze della ricerca. column_as( $sql, $column_name )- Aggiunge la clausola di modifica della colonna.
get_columns()- Getter per le colonne registrate.
get_weights()- Getter per le modifiche di peso registrate.
get_join_sql()- Getter per l'SQL
JOINgenerato. raw_join_sql( $sql )- Aggiunge la clausola SQL
JOINgrezza. get_raw_join_sql()- Getter per le clausole SQL
JOINgrezze. raw_where_sql( $sql )- Aggiunge la clausola SQL
WHEREgrezza. get_raw_where_sql()- Getter per le clausole SQL
WHEREgrezze. get_source()- Getter per il
\SearchWP\Sourceapplicabile. set_where( $where )- Imposta le clausole
WHERE. get_where()- Ottiene le clausole
WHERE. set_local_table( string $table )- Imposta il nome della tabella locale.
get_local_table()- Ottiene il nome della tabella locale.
set_local_table_alias( string $table )- Imposta l'alias della tabella locale.
get_local_table_alias()- Ottiene l'alias della tabella locale.
set_foreign_alias( string $alias )- Imposta l'alias della tabella esterna.
get_foreign_alias()- Ottiene l'alias della tabella esterna.
on( string $local, array $foreign )- Aggiunge la clausola
ON. get_on()- Ottiene le clausole
ON. order_by( $column, $direction, $priority )- Aggiunge la clausola
ORDER BY. Esempio get_order_by()- Ottiene le clausole
ORDER BY. set_values( array $values )- Imposta i valori dei segnaposto SQL da escapare al runtime.
get_values()- Ottiene i valori dei segnaposto SQL.

