\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:
- Se puede pasar una matriz de
\SearchWP\Moda\SearchWP\Queryutilizando el argumento'mods'. - 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. |
Si no se proporciona $source, se aplicarán internamente valores predeterminados sensatos durante la instanciación.
fuente(cadena)- El
namedel\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
JOINgenerado. unir_sql_crudo( $sql )- Añade la cláusula SQL
JOINbruta. obtener_unir_sql_crudo()- Obtenedor de las cláusulas SQL
JOINbrutas. donde_sql_crudo( $sql )- Añade la cláusula SQL
WHEREbruta. obtener_donde_sql_crudo()- Obtenedor de las cláusulas SQL
WHEREbrutas. obtener_fuente()- Obtenedor del
\SearchWP\Sourceaplicable. 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.

