\SearchWP\Mod
Sumário
Objetos \SearchWP\Mod são usados para modificar uma \SearchWP\Query.
Cada \SearchWP\Mod implementa uma única modificação, e qualquer número de \SearchWP\Mods pode ser usado ao mesmo tempo.
Alguns casos de uso comuns para \SearchWP\Mods incluem:
- Alterar o cálculo de peso de relevância dos resultados com base em parâmetros personalizados.
- Controlar quais resultados são retornados (ou não) com base em critérios personalizados.
JOINcom tabelas de banco de dados personalizadas para implementar critérios personalizados.
Mais especificamente relacionado a Posts, Páginas e Tipos de Post Personalizados, \SearchWP\Mods podem ser usados para:
- Limitar resultados aos que estão em uma determinada Categoria.
- Excluir resultados com uma determinada Tag.
- Dar peso extra a datas de publicação mais recentes.
- Implementar um aumento de peso com base no valor meta para posts com um determinado Campo Personalizado.
- Adicionar peso bônus a posts que têm um determinado termo de taxonomia.
\SearchWP\Mods permitem a interação com uma \SearchWP\Query sem ter que escrever SQL personalizado, embora isso possa ser feito onde aplicável ao montar um \SearchWP\Mod ou usando um hook de \SearchWP\Query.
Veja também: Comparando Mods de Índice e Fonte
Uso Básico
O uso de \SearchWP\Mod varia de acordo com o caso de uso, mas a implementação ocorre de uma das duas maneiras:
- Um array de
\SearchWP\Modpode ser passado para\SearchWP\Queryusando o argumento'mods'. - Usando o hook
searchwp\query\mods.
Como exemplo, este \SearchWP\Mod exclui os Posts 145 e 211 dos resultados da pesquisa:
| <?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', | |
| ] ] ); |
Com o \SearchWP\Mod escrito, o próximo passo é implementá-lo seguindo 1 dos 2 passos acima.
Se você estiver construindo sua própria \SearchWP\Query, pode passar este \SearchWP\Mod com o argumento '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. |
Alternativamente, você pode usar o hook searchwp\query\mods para enfileirar o \SearchWP\Mod.
Observação: ao usar este método, este \SearchWP\Mod será aplicado a todas as pesquisas, a menos que código adicional seja escrito para evitar isso.
| <?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. |
Usar o hook searchwp\query\mods para enfileirar um \SearchWP\Mod permite a aplicação durante pesquisas nativas.
Argumentos
\SearchWP\Mod tem um único argumento opcional: $source.
Quando um $source é definido, alguns comportamentos (por exemplo, cláusulas WHERE) serão automaticamente restritos à lógica para essa $source específica.
Quando um $source não é fornecido, esse comportamento se aplicará ao índice.
Para mais informa ilde{A§ ilde{A}o, consulte Comparando M ilde{A³dulos de Origem e de Indexa ilde{A§ ilde{A}o.
$source pode ser o name de um \SearchWP\Source ou o pr ilde{A³prio \SearchWP\Source.
Observa ilde{A§ ilde{A}o: Ao trabalhar com Sources de WP_Post, voc ilde{Aª pode usar este m ilde{A©todo utilit ilde{A¡rio para recuperar o name do Source passando o nome do tipo de postagem:
| <?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 nenhum $source for fornecido, padr ilde{Aµes sensatos ser ilde{A£o tratados internamente durante a instancia ilde{A§ ilde{A}o.
source(string)- O
namedo\SearchWP\Source(padr ilde{A£o:null)
Métodos
relevance( $sql )- Adiciona cl ilde{A¡usula de c ilde{A¡lculo de relev ilde{A¢ncia. Exemplo
weight( $sql )- Adiciona cl ilde{A¡usula de c ilde{A¡lculo de peso. Observa ilde{A§ ilde{A}o: ao contr ilde{A¡rio de
relevance(), o c ilde{A¡lculo de peso ilde{A© multiplicado pelo n ilde{Aºmero de correspond ilde{Aªncias da pesquisa. column_as( $sql, $column_name )- Adiciona cl ilde{A¡usula de modifica ilde{A§ ilde{A}o de coluna.
get_columns()- Getter para colunas registradas.
get_weights()- Getter para modifica ilde{A§ ilde{A}es de peso registradas.
get_join_sql()- Getter para SQL
JOINgerado. raw_join_sql( $sql )- Adiciona cl ilde{A¡usula SQL
JOINbruta. get_raw_join_sql()- Getter para cl ilde{A¡usulas SQL
JOINbrutas. raw_where_sql( $sql )- Adiciona cl ilde{A¡usula SQL
WHEREbruta. get_raw_where_sql()- Getter para cl ilde{A¡usulas SQL
WHEREbrutas. get_source()- Getter para
\SearchWP\Sourceaplic ilde{A¡vel. set_where( $where )- Setter para cl ilde{A¡usulas
WHERE. get_where()- Getter para cláusulas
WHERE. set_local_table( string $table )- Setter para o nome da tabela local.
get_local_table()- Getter para o nome da tabela local.
set_local_table_alias( string $table )- Setter para o alias da tabela local.
get_local_table_alias()- Getter para o alias da tabela local.
set_foreign_alias( string $alias )- Setter para o alias da tabela estrangeira.
get_foreign_alias()- Getter para o alias da tabela estrangeira.
on( string $local, array $foreign )- Adiciona cláusula
ON. get_on()- Getter para cláusulas
ON. order_by( $column, $direction, $priority )- Adiciona cláusula
ORDER BY. Exemplo get_order_by()- Getter para cláusulas
ORDER BY. set_values( array $values )- Setter para valores de placeholders SQL a serem escapados em tempo de execução.
get_values()- Getter para valores de placeholders SQL.

