\SearchWP\Source
Tabla de contenidos
\SearchWP\Source es una clase abstracta diseñada para modelar tipos de contenido para los procesos de indexación y búsqueda de SearchWP. Los \SearchWP\Source se añaden a los Motores que, a su vez, se utilizan al instanciar un \SearchWP\Query.
En SearchWP hay una serie de \SearchWP\Source principales disponibles por defecto, incluyendo:
- Cada Tipo de Publicación registrado
- Usuarios
Debido a que estos \SearchWP\Source están disponibles por defecto, se pueden usar inmediatamente al configurar sus Motores.
Uso básico
Puede crear sus propios \SearchWP\Source para que coincidan con cualquier tipo de contenido personalizado que tenga (incluidos aquellos con tablas de bases de datos personalizadas) utilizando esta clase y el 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; | |
| } ); | |
| } ); |
Nota: Cualquier \SearchWP\Source registrado también puede ser eliminado utilizando el hook searchwp\sources.
Argumentos
No hay argumentos al instanciar un nuevo \SearchWP\Source.
Propiedades
Al extender \SearchWP\Source hay una serie de propiedades a considerar.
name(string)- Un nombre único. (por defecto:
'') labels(array)- Etiquetas, array con claves
singularyplural. (por defecto:[]) db_table(string)- La tabla de base de datos utilizada para almacenar las entradas a indexar. (por defecto:
'') db_id_column(string)- La columna de base de datos utilizada para rastrear los IDs de las entradas. (por defecto:
'') attributes(array)-
Atributosindividuales para recibir un peso de relevancia al configurar esta Fuente en un Motor. (por defecto:[]) - Array de
Atributoso arrays de configuración de Atributos, cada uno con las siguientes claves: 'name'(string) Nombre del Atributo.'label'(string) Etiqueta del Atributo.'default'(integer) Peso por defecto (cero para omitir como por defecto).'options'(array) Opcional. Define instancias individuales de este Atributo.'data'(mixed) Define los datos para este Atributo al instanciar una Entrada.- – El primer parámetro es el ID de la entrada según
$db_id_column - – El segundo parámetro (cuando sea aplicable) es la
optionelegida deoptions rules(array)- Reglas individuales
Rulepara controlar la elegibilidad de las Entradas como resultados de búsqueda. (por defecto:[]) - Matriz de
Rules o matrices de configuración de Reglas, cada una con las siguientes claves: 'name'(string) Nombre de la regla.'label'(string) Etiqueta de la regla.'options'(array) Opcional. Define opciones individuales para esta Regla.'conditions'(array) Opcional. Define condiciones individuales de esta Regla.'values'(array) Opcional. Define valores para cada opción de esta Regla.'application'(mixed) Aplica la lógica de la regla.- – El primer parámetro contiene las propiedades de la regla como una matriz
optionLa opción elegidaconditionLa condición elegidavalueEl valor elegido
Métodos
Al extender \SearchWP\Source hay una serie de métodos a considerar.
db_where(retornaarray)- Matriz de matrices de cláusulas
WHEREque deben cumplirse tanto para la indexación como para la búsqueda. (por defecto:[]) 'column'(string) Columna de la base de datos'value'(mixed) Valor'type'(string) Tipo de valor(es), puede ser'CHAR'o'NUMERIC''compare'(string) Método por el cual compararvalue- Los tipos de comparación disponibles incluyen:
'=','!=','>','>=','<','<=','LIKE','NOT LIKE','IN','NOT IN','BETWEEN','NOT BETWEEN','EXISTS','NOT EXISTS' entry(retornamixed)- Cuando se encuentra un resultado de búsqueda, este método se activa para recuperar una representación nativa de ese resultado. (por defecto:
stdClass) - – El primer parámetro es la
\SearchWP\Entryque se encontró - – El segundo parámetro es la
\SearchWP\Queryque encontró este resultado (si es aplicable) add_hooks- Se activa al inicializar esta Fuente. Se utiliza principalmente para implementar hooks que faciliten las actualizaciones del
\SearchWP\Index\Controllera medida que se edita el contenido.
Hooks
Hay una serie de ganchos disponibles para modificar aún más el comportamiento de \SearchWP\Source:

