SearchWP Documentation

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

Confronto tra modifiche all'indice e modifiche all'origine

I Mod di \SearchWP\Mod sono interazioni appositamente create con le query di ricerca di SearchWP.

Esistono due tipi principali di Mod:

Basato sull'indice
Applica la modifica all'intero indice
Basato sulla sorgente
Limita la modifica a una singola Sorgente

Il modo principale per specificare quale tipo di Mod stai implementando è passare una Sorgente (o il nome della Sorgente) durante l'istanziazione di un Mod.

Nota: questo è un confronto tra le due istanziazioni, si noti che questi Mod non fanno ancora nulla.

<?php
// @link https://searchwp.com/documentation/knowledge-base/comparing-index-source-mods/
// Instantiate an index Mod that applies to the entire index.
$mod = new \SearchWP\Mod();
// Instantiate a Source Mod that applies only to Posts.
$source = \SearchWP\Utils::get_post_type_source_name( 'post' );
$mod = new \SearchWP\Mod( $source );

Il primo Mod è stato istanziato in modo da applicarsi all'intero indice quando la query viene eseguita. Al contrario, il secondo Mod si applicherà solo a una singola Sorgente.

Utilizzo di un Mod basato sull'indice

Un Mod basato sull'indice ha solo l'indice SearchWP come contesto. I Mod basati sull'indice dovrebbero essere limitati a quelli che necessitano solo di quel contesto immediato per svolgere il loro lavoro.

Sebbene sia certamente possibile eseguire JOIN aggiuntivi utilizzando un Mod basato sull'indice, farlo potrebbe comportare un aumento dei tempi di query che potrebbero non essere così evidenti con un Mod basato sulla sorgente.

Ad esempio: un Mod basato sull'indice applicabile sarebbe uno che aggiunge un peso 'bonus' a una particolare Sorgente restituita come risultato.

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/comparing-index-source-mods/
// Add relevance weight to a single SearchWP Source (Posts).
add_filter( 'searchwp\query\mods', function( $mods ) {
global $wpdb;
$mod = new \SearchWP\Mod();
$source = \SearchWP\Utils::get_post_type_source_name( 'post' );
$mod->weight( $wpdb->prepare( "IF(s.source = %s, 9999999, 0)", $source ) );
$mods[] = $mod;
return $mods;
} );

Con questo Mod verrà assegnato un peso di rilevanza 'bonus' di 9999999 a tutti i Post. Un caso d'uso per un hook come questo potrebbe essere che si desidera che i Post vengano (quasi) garantiti per apparire sopra tutte le altre Sorgente senza forzare esplicitamente le Sorgente ad essere raggruppate.

Utilizzo di un Mod basato sulla sorgente

I Mod basati sulla sorgente facilitano le modifiche alle query che si applicano solo a una singola Sorgente. In questo caso esiste già un JOIN con la tabella del database che definisce la Sorgente, il che apre nuove possibilità di modifica.

Ad esempio: un Mod basato sulla sorgente può essere utilizzato per escludere determinati Post dai risultati di ricerca se è stata soddisfatta una qualche condizione:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/comparing-index-source-mods/
add_filter( 'searchwp\query\mods', function( $mods ) {
if ( ! isset( $_GET['my_mod_trigger'] ) ) {
return $mods;
}
// Exclude Posts 97 and 188 from search results.
$source = \SearchWP\Utils::get_post_type_source_name( 'post' );
$mod = new \SearchWP\Mod( $source );
$mod->set_where( [ [
'column' => 'ID',
'value' => ['97', '188'],
'compare' => 'NOT IN',
'type' => 'NUMERIC'
] ] );
$mods[] = $mod;
return $mods;
}, 30, 2 );

Utilizzando questo Mod, i Post 97 e 188 sono esclusi dai risultati di ricerca solo quando $_GET['my_mod_trigger'] è stato definito.

Un altro esempio: un Mod basato sulla sorgente può essere utilizzato per escludere le Pagine con la parola caffè nel loro Titolo:

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/comparing-index-source-mods/
add_filter( 'searchwp\query\mods', function( $mods ) {
// Exclude Pages with 'coffee' in the Title.
$source = \SearchWP\Utils::get_post_type_source_name( 'page' );
$mod = new \SearchWP\Mod( $source );
$mod->set_where( [ [
'column' => 'post_title',
'value' => 'coffee',
'compare' => 'LIKE',
] ] );
$mods[] = $mod;
return $mods;
}, 30, 2 );

I Mod basati sulla sorgente sono modi potenti e programmatici per modificare il modo in cui SearchWP esegue le sue ricerche.

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