SearchWP Documentation

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

Usar un Campo Personalizado para Priorizar los Resultados de Búsqueda

Por defecto, SearchWP devuelve los resultados de búsqueda ordenados por peso de relevancia calculado en orden descendente.

En otras palabras, los resultados más relevantes suben a la cima basándose en los pesos que has establecido en la pantalla de configuración del motor para tu(s) motor(es) de búsqueda. Tener control sobre la relevancia de los atributos facilita directamente el control sobre cómo se clasifican los resultados de búsqueda.

El sistema de relevancia de SearchWP se puede modificar a tu gusto. Este artículo describirá cómo usar el valor numérico de un campo personalizado (postmeta) para controlar la clasificación de los resultados de búsqueda.

Esto, en esencia, crea una 'boya' que anula el cálculo del peso de relevancia de SearchWP y clasificará los resultados basándose en su valor de campo personalizado.

Con esta personalización, los resultados con un valor de campo personalizado se clasificarán por encima de aquellos sin un valor de campo personalizado. Los resultados con el valor de campo personalizado se ordenarán primero por ese valor de campo personalizado y luego por el valor de relevancia de SearchWP. Los resultados sin el valor de campo personalizado se ordenarán por el valor de relevancia de SearchWP.

Ver también: Añadir peso de relevancia a entradas publicadas más recientemente por fecha

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// Use a Custom Field as a buoy to supersede SearchWP's relevance weight sorting.
// @link https://searchwp.com/documentation/knowledge-base/custom-field-prioritize-results/
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
global $wpdb;
$meta_key = 'my_buoy_meta_key';
// Add the buoy to these post types:
$post_types = [ 'post', 'page', ];
foreach ( $post_types as $post_type ) {
$mod = new \SearchWP\Mod();
$alias = \SearchWP::$index->get_alias();
$meta_alias = 'my_searchwp_sort_' . $post_type;
$mod->column_as( $wpdb->prepare( "(
SELECT meta_value
FROM {$wpdb->postmeta}
WHERE
{$wpdb->postmeta}.post_id = {$alias}.id
AND {$wpdb->postmeta}.meta_key = %s
)", $meta_key ),
$meta_alias );
$mod->order_by( "{$meta_alias} + 0", 'ASC', 2 );
$mods[] = $mod;
}
return $mods;
}, 30, 2 );

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.

Get SearchWP Now
Icono de múltiples motores de búsqueda