Documentación de SearchWP

Consulta la guía de instalación, explora la base de conocimiento, descubre los numerosos hooks de SearchWP

\SearchWP\Mod

Tabla de contenidos

Los objetos \SearchWP\Mod se utilizan para modificar una \SearchWP\Query.

Cada \SearchWP\Mod implementa una única modificación, y se puede utilizar cualquier número de \SearchWP\Mods a la vez.

Algunos casos de uso comunes para \SearchWP\Mods incluyen:

  • Alterar el cálculo del peso de relevancia de los resultados basándose en parámetros personalizados.
  • Controlar qué resultados se devuelven (o no) basándose en criterios personalizados.
  • JOINir con tablas de base de datos personalizadas para implementar criterios personalizados.

Más específicamente en relación con Entradas, Páginas y Tipos de Contenido Personalizado, los \SearchWP\Mods se pueden utilizar para:

  • Limitar los resultados a aquellos de una categoría determinada.
  • Excluir resultados con una etiqueta determinada.
  • Dar peso adicional a las fechas de publicación más recientes.
  • Implementar un impulso de peso basado en el valor meta para entradas con un Campo Personalizado determinado.
  • Añadir peso extra a las entradas que tienen un término de taxonomía determinado.

Los \SearchWP\Mods permiten la interacción con una \SearchWP\Query sin tener que escribir SQL personalizado, aunque esto se puede hacer cuando sea aplicable al configurar un \SearchWP\Mod o utilizando un hook de \SearchWP\Query.

Véase también: Comparación de Mods de Índice y Fuente

Uso básico

El uso de \SearchWP\Mod varía según el caso de uso, pero la implementación se produce de una de estas dos maneras:

  1. Se puede pasar una matriz de \SearchWP\Mod a \SearchWP\Query utilizando el argumento 'mods'.
  2. Usando el hook searchwp\query\mods.

Como ejemplo, este \SearchWP\Mod excluye las Entradas 145 y 211 de los resultados de búsqueda:

<?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',
] ] );

Con el \SearchWP\Mod escrito, el siguiente paso es implementarlo siguiendo uno de los 2 pasos anteriores.

Si estás creando tu propia \SearchWP\Query puedes pasar este \SearchWP\Mod con el 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, puedes usar el hook searchwp\query\mods para encolar el \SearchWP\Mod.

Nota: que cuando se utiliza este método, este \SearchWP\Mod se aplicará a todas las búsquedas a menos que se escriba código adicional para evitarlo.

<?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.

El uso del hook searchwp\query\mods para encolar un \SearchWP\Mod permite la aplicación durante las búsquedas nativas.

Argumentos

\SearchWP\Mod tiene un único argumento, opcional: $source.

Cuando se define un $source, algunos comportamientos (por ejemplo, cláusulas WHERE) se restringirán automáticamente a la lógica de ese $source en particular.

Cuando no se proporciona un $source, ese comportamiento se aplicará al índice.

Para más información, consulte Comparación de Módulos de Índice y Fuente.

$source puede ser el name de un \SearchWP\Source o el propio \SearchWP\Source.

Nota: Al trabajar con Sources de WP_Post, puede usar este método de utilidad para recuperar el name del Source pasando el nombre del tipo de publicación:

<?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.
view raw functions.php hosted with ❤ by GitHub

Si no se proporciona $source, se aplicarán internamente valores predeterminados sensatos durante la instanciación.

fuente (cadena)
El name del \SearchWP\Source (predeterminado: null)

Métodos

relevancia( $sql )
Añade la cláusula de cálculo de relevancia. Ejemplo
peso( $sql )
Añade la cláusula de cálculo de peso. Nota: a diferencia de relevance(), el cálculo del peso se multiplica por el número de coincidencias de búsqueda.
columna_como( $sql, $nombre_columna )
Añade la cláusula de modificación de columna.
obtener_columnas()
Obtenedor de las columnas registradas.
obtener_pesos()
Obtenedor de las modificaciones de peso registradas.
obtener_unir_sql()
Obtenedor del SQL JOIN generado.
unir_sql_crudo( $sql )
Añade la cláusula SQL JOIN bruta.
obtener_unir_sql_crudo()
Obtenedor de las cláusulas SQL JOIN brutas.
donde_sql_crudo( $sql )
Añade la cláusula SQL WHERE bruta.
obtener_donde_sql_crudo()
Obtenedor de las cláusulas SQL WHERE brutas.
obtener_fuente()
Obtenedor del \SearchWP\Source aplicable.
establecer_donde( $donde )
Establecedor de cláusulas WHERE.
obtener_donde()
Getter para cláusulas WHERE.
establecer_tabla_local( string $tabla )
Setter para el nombre de la tabla local.
obtener_tabla_local()
Getter para el nombre de la tabla local.
establecer_alias_tabla_local( string $tabla )
Setter para el alias de la tabla local.
obtener_alias_tabla_local()
Getter para el alias de la tabla local.
establecer_alias_externo( string $alias )
Setter para el alias de la tabla externa.
obtener_alias_externo()
Getter para el alias de la tabla externa.
en( string $local, array $externo )
Añade la cláusula ON.
obtener_en()
Getter para las cláusulas ON.
ordenar_por( $columna, $direccion, $prioridad )
Añade la cláusula ORDER BY. Ejemplo
obtener_ordenar_por()
Getter para las cláusulas ORDER BY.
establecer_valores( array $valores )
Setter para los valores de marcador de posición SQL que se escaparán en tiempo de ejecución.
obtener_valores()
Getter para los valores de marcador de posición SQL.

Cree hoy mismo una mejor experiencia de búsqueda en WordPress

No vuelva a perder visitantes por resultados de búsqueda inútiles. SearchWP facilita la creación de su propia búsqueda inteligente en WordPress.

Obtén SearchWP Ahora
Icono de múltiples motores de búsqueda