\SearchWP\Source
Sumário
\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:
- Cada Tipo de Post registrado
- Usuários
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
singulareplural. (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
optionescolhida deoptions 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
opcaoA opção escolhidacondicaoA condição escolhidavalorO valor escolhido
Métodos
Ao estender \SearchWP\Source, há uma série de métodos a serem considerados.
db_where(retornaarray)- Matriz de matrizes de cláusula
WHEREque 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 compararvalor- Os tipos de comparação disponíveis incluem:
'=','!=','>','>=','<','<=','LIKE','NOT LIKE','IN','NOT IN','BETWEEN','NOT BETWEEN','EXISTS','NOT EXISTS' entrada(retornamixed)- 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\Entryque foi encontrada - – O 2º parâmetro é a
\SearchWP\Queryque 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:

