SearchWP Documentation

Visualizza la guida all'installazione, sfoglia la Knowledge Base, scopri i numerosi hook di SearchWP

\SearchWP\Mod

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.
  • JOIN con 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:

  1. Un array di \SearchWP\Mod può essere passato a \SearchWP\Query utilizzando l'argomento 'mods'.
  2. 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.
view raw functions.php hosted with ❤ by GitHub

Se non viene fornito alcun $source, verranno gestiti internamente valori predefiniti sensati durante l'istanziazione.

source (string)
Il nome del \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 JOIN generato.
raw_join_sql( $sql )
Aggiunge la clausola SQL JOIN grezza.
get_raw_join_sql()
Getter per le clausole SQL JOIN grezze.
raw_where_sql( $sql )
Aggiunge la clausola SQL WHERE grezza.
get_raw_where_sql()
Getter per le clausole SQL WHERE grezze.
get_source()
Getter per il \SearchWP\Source applicabile.
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.

Crea Oggi Stesso una Migliore Esperienza di Ricerca WordPress

Non perdere mai più visitatori a causa di risultati di ricerca inutili. SearchWP rende la creazione della tua ricerca intelligente WordPress veloce e facile.

Get SearchWP Now
Icona di motori di ricerca multipli