SearchWP Documentation

Veja o guia de instalação, navegue pela Base de Conhecimento, descubra os muitos hooks do SearchWP

Comparando Mods de Índice e Fonte

\SearchWP\Mods são interações criadas especificamente para consultas de pesquisa do SearchWP.

Existem dois tipos principais de Mods:

Baseado em Índice
Aplicar modificação ao índice como um todo
Baseado em Fonte
Limitar a modificação a uma única Fonte

A principal forma de especificar o tipo de Mod que você está implementando é passar uma Fonte (ou o nome da Fonte) ao instanciar um Mod.

Observação: esta é uma comparação das duas instanciações, note que esses Mods ainda não fazem nada.

<?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 );

O primeiro Mod foi instanciado de forma que se aplicará ao Índice como um todo quando a consulta for executada. Em comparação, o segundo Mod se aplicará apenas a uma única Fonte.

Usando um Mod baseado em Índice

Um Mod baseado em Índice tem apenas o Índice do SearchWP como seu contexto. Mods baseados em Índice devem ser limitados àqueles que precisam apenas desse contexto imediato para realizar seu trabalho.

Embora seja certamente possível realizar JOINs adicionais usando um Mod baseado em Índice, fazer isso pode resultar em tempos de consulta aumentados que podem não ser tão prevalentes com um Mod baseado em Fonte.

Por exemplo: um Mod aplicável baseado em Índice seria um que adiciona um peso 'bônus' a uma Fonte específica que é retornada como resultado.

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;
} );

Com este Mod, um peso de relevância 'bônus' de 9999999 será concedido a todos os Posts. Um caso de uso para um hook como este pode ser que você queira que os Posts sejam (quase) garantidos de aparecer acima de todas as outras Fontes sem explicitamente forçar as Fontes a serem agrupadas.

Usando um Mod baseado em Fonte

Mods baseados em Fonte facilitam modificações de consulta que se aplicam apenas a uma única Fonte. Neste caso, já existe um JOIN com a tabela do banco de dados que define a Fonte, o que abre novas possibilidades de modificação.

Por exemplo: um Mod baseado em Fonte pode ser usado para excluir Posts específicos de resultados de pesquisa se alguma condição for atendida:

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 );

Usando este Mod, os Posts 97 e 188 são excluídos dos resultados de pesquisa apenas quando $_GET['my_mod_trigger'] foi definido.

Outro exemplo: um Mod baseado em Fonte pode ser usado para excluir Páginas com a palavra café em seu Título:

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 );

Mods baseados em Fonte são maneiras poderosas e programáticas de modificar a forma como o SearchWP realiza suas pesquisas.

Crie uma Experiência de Pesquisa WordPress Melhor Hoje

Nunca mais perca visitantes para resultados de pesquisa inúteis. O SearchWP torna a criação de sua própria pesquisa inteligente do WordPress rápida e fácil.

Get SearchWP Now
Ícone de Múltiplos Mecanismos de Busca