SearchWP Documentation

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

\SearchWP\Source

\SearchWP\Source é uma classe abstrata projetada para modelar tipos de conteúdo para os processos de indexação e pesquisa do SearchWP. \SearchWP\Sources são adicionados a Engines que, por sua vez, são usados ao instanciar um \SearchWP\Query.

No SearchWP existem vários \SearchWP\Sources principais disponíveis por padrão, incluindo:

Como esses \SearchWP\Sources estão disponíveis por padrão, eles podem ser usados imediatamente ao configurar seus Engines.

Uso Básico

Você pode criar seus próprios \SearchWP\Sources para corresponder a quaisquer tipos de conteúdo personalizados que você tenha (incluindo aqueles com tabelas de banco de dados personalizadas) usando esta classe e o hook searchwp\sources.

<?php
// @link https://searchwp.com/documentation/classes/searchwp-source/
/**
* Adds custom SearchWP\Source for MyCustomSearchWPSource which uses a custom database table.
*/
add_action( 'plugins_loaded', function() {
class MyCustomSearchWPSource extends \SearchWP\Source {
// Unique name for this Source.
protected $name = 'mycustomsource';
// Database column name that provides a unique ID for each entry of the Source.
protected $db_id_column = 'id';
function __construct() {
global $wpdb;
// The database table storing entries.
$this->db_table = $wpdb->get_blog_prefix() . 'my_db_table';
// Labels for this Source.
$this->labels = [
'plural' => 'My Custom Source Entries',
'singular' => 'My Custom Source Entry',
];
// Attributes for this Source. Array of attributes, can be expanded.
$this->attributes = [ [
'name' => 'content',
'label' => 'Entry Content',
'default' => \SearchWP\Utils::get_min_engine_weight(),
'data' => function( $entry_id ) {
// Note: MyWidget is an pseudo-class meant to represent
// a class you're using that represents something like
// WP_Post in that it models the data you are working with.
// Long story short: this method should return the content
// you want to index and make searchable in SearchWP.
return MyWidget::get_content( $entry_id );
},
], ];
}
// Returns a native object e.g. formatted in a way you expect.
public function entry( \SearchWP\Entry $entry, $query = false ) {
// Note: MyWidget is a pseudo-class meant to represent a class
// you're using that represents something like WP_Post in that it
// models the data you're working with.
// Long story short: this method should return whatever it is you
// expect when working 'natively' with your data e.g. for WordPress
// pages a WP_Post is returned. Note that $entry->get_id() returns
// the value in the $db_id_column for this Source.
return new MyWidget( $entry->get_id() );
}
}
// Append this Source to the list of available Sources in SearchWP.
add_filter( 'searchwp\sources', function( $sources ) {
$sources[] = new MyCustomSearchWPSource();
return $sources;
} );
} );

Observação: Qualquer \SearchWP\Source registrado também pode ser removido usando o hook searchwp\sources.

Argumentos

Não há argumentos ao instanciar um novo \SearchWP\Source.

Propriedades

Ao estender \SearchWP\Source, há várias propriedades a serem consideradas.

name (string)
Um nome único. (padrão: '')
labels (array)
Rótulos, array com chaves singular e plural. (padrão: [])
db_table (string)
A tabela do banco de dados usada para armazenar entradas a serem indexadas. (padrão: '')
db_id_column (string)
A coluna do banco de dados usada para rastrear IDs de entrada. (padrão: '')
attributes (array)
Attributes individuais para receber um peso de relevância ao configurar este Source em um Engine. (padrão: [])
Array de Attributes ou arrays de configurações de Attribute, cada um com as seguintes chaves:
'name' (string) Nome do Attribute.
'label' (string) Rótulo do Attribute.
'default' (integer) Peso padrão (zero para omitir como padrão).
'options' (array) Opcional. Define instâncias individuais deste Attribute.
'data' (mixed) Define os dados para este Attribute ao instanciar uma Entry.
– 1º parâmetro é o ID da entrada conforme $db_id_column
– 2º parâmetro (quando aplicável) é a option escolhida de options
regras (array)
Regras individuais para controlar a candidatura de Entradas como resultados de pesquisa. (padrão: [])
Matriz de Regras ou matrizes de configurações de Regra, cada uma com as seguintes chaves:
'nome' (string) Nome da Regra.
'rotulo' (string) Rótulo da Regra.
'opcoes' (array) Opcional. Define opções individuais para esta Regra.
'condicoes' (array) Opcional. Define condições individuais desta Regra.
'valores' (array) Opcional. Define valores para cada opção desta Regra.
'aplicacao' (mixed) Aplica a lógica da regra.
– O 1º parâmetro contém as propriedades da regra como uma matriz
opcao A opção escolhida
condicao A condição escolhida
valor O valor escolhido

Métodos

Ao estender \SearchWP\Source, há uma série de métodos a serem considerados.

db_where (retorna array)
Matriz de matrizes de cláusula WHERE que devem ser atendidas para indexação e pesquisa. (padrão: [])
'coluna' (string) Coluna do banco de dados
'valor' (mixed) Valor
'tipo' (string) Tipo de valor(es), pode ser 'CHAR' ou 'NUMERIC'
'comparacao' (string) Método pelo qual comparar valor
Os tipos de comparação disponíveis incluem: '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS'
entrada (retorna mixed)
Quando um resultado de pesquisa é encontrado, este método é acionado para recuperar uma representação nativa desse resultado. (padrão: stdClass)
– O 1º parâmetro é a \SearchWP\Entry que foi encontrada
– O 2º parâmetro é a \SearchWP\Query que encontrou este resultado (se aplicável)
add_hooks
Acionado na inicialização desta Fonte. Usado principalmente para implementar hooks para facilitar atualizações do \SearchWP\Index\Controller à medida que o conteúdo é editado.

Hooks

Existem vários hooks disponíveis para modificar ainda mais o comportamento de \SearchWP\Source:

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