SearchWP Documentation

Consultez le guide d’installation, parcourez la base de connaissances, découvrez les nombreux hooks de SearchWP

Utiliser un champ personnalisé pour prioriser les résultats de recherche

Par défaut, SearchWP renvoie les résultats de recherche classés par poids de pertinence calculé, par ordre décroissant.

Autrement dit, les résultats les plus pertinents remontent en tête en fonction des poids que vous avez définis sur l'écran des paramètres du moteur pour votre ou vos moteurs de recherche. Le contrôle direct de la pertinence des attributs facilite le contrôle du classement des résultats de recherche.

Le système de pertinence de SearchWP peut être modifié à votre guise. Cet article expliquera comment utiliser la valeur numérique d'un champ personnalisé (postmeta) pour contrôler le classement des résultats de recherche.

Ceci crée essentiellement une 'bouée' qui remplace le calcul du poids de pertinence de SearchWP et classe les résultats en fonction de la valeur de leur champ personnalisé.

Avec cette personnalisation, les résultats ayant une valeur de champ personnalisé se classeront au-dessus de ceux qui n'en ont pas. Les résultats avec la valeur du champ personnalisé seront triés d'abord par cette valeur de champ personnalisé, puis par la valeur de pertinence de SearchWP. Les résultats sans la valeur du champ personnalisé seront triés par la valeur de pertinence de SearchWP.

Voir aussi : Ajouter un poids de pertinence aux entrées publiées plus récemment par date

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 );

Créez dès aujourd'hui une meilleure expérience de recherche WordPress

Ne perdez plus jamais de visiteurs à cause de résultats de recherche inutiles. SearchWP rend la création de votre propre recherche WordPress intelligente rapide et facile.

Get SearchWP Now
Icône de moteurs de recherche multiples