SearchWP Documentation

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

\SearchWP\Mod

Les objets \SearchWP\Mod sont utilisés pour modifier une \SearchWP\Query.

Chaque \SearchWP\Mod implémente une seule modification, et n'importe quel nombre de \SearchWP\Mods peut être utilisé à la fois.

Quelques cas d'utilisation courants pour les \SearchWP\Mods incluent :

  • Modifier le calcul de la pertinence des résultats basé sur des paramètres personnalisés.
  • Contrôler quels résultats sont retournés (ou non) en fonction de critères personnalisés.
  • JOINdre avec des tables de base de données personnalisées pour implémenter des critères personnalisés.

Plus spécifiquement lié aux Articles, Pages et Types d'articles personnalisés, les \SearchWP\Mods peuvent être utilisés pour :

  • Limiter les résultats à ceux d'une certaine Catégorie.
  • Exclure les résultats avec une certaine Étiquette.
  • Donner un poids supplémentaire aux dates de publication plus récentes.
  • Implémenter un boost de poids basé sur la valeur méta pour les articles avec un Champ personnalisé donné.
  • Ajouter un poids bonus aux articles qui ont un terme de taxonomie donné.

Les \SearchWP\Mods permettent d'interagir avec une \SearchWP\Query sans avoir à écrire de SQL personnalisé, bien que cela puisse être fait le cas échéant lors de la création d'un \SearchWP\Mod ou en utilisant un \SearchWP\Query hook.

Voir aussi : Comparaison des mods d'index et de source

Utilisation de base

L'utilisation de \SearchWP\Mod varie selon le cas d'utilisation, mais l'implémentation se fait de l'une des deux manières suivantes :

  1. Un tableau de \SearchWP\Mod peut être passé à \SearchWP\Query en utilisant l'argument 'mods'.
  2. Utiliser le hook searchwp\query\mods.

À titre d'exemple, ce \SearchWP\Mod exclut les articles 145 et 211 des résultats de recherche :

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

Une fois le \SearchWP\Mod écrit, l'étape suivante consiste à l'implémenter en suivant l'une des 2 étapes ci-dessus.

Si vous créez votre propre \SearchWP\Query, vous pouvez passer ce \SearchWP\Mod avec l'argument '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.

Alternativement, vous pouvez utiliser le hook searchwp\query\mods pour mettre en file d'attente le \SearchWP\Mod.

Note : lorsque cette méthode est utilisée, ce \SearchWP\Mod sera appliqué à toutes les recherches à moins qu'un code supplémentaire ne soit écrit pour l'en empêcher.

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

L'utilisation du hook searchwp\query\mods pour mettre en file d'attente un \SearchWP\Mod permet son application lors des recherches natives.

Arguments

\SearchWP\Mod a un argument unique et facultatif : $source.

Lorsqu'un $source est défini, certains comportements (par exemple, les clauses WHERE) seront automatiquement restreints à la logique de ce $source particulier.

Lorsqu'un $source n'est pas fourni, ce comportement s'appliquera à l'index.

Pour plus d'informations, veuillez consulter Comparaison des index et des sources de recherche.

$source peut être soit le nom d'une \SearchWP\Source, soit la \SearchWP\Source elle-même.

Note : Lorsque vous travaillez avec des Sources WP_Post, vous pouvez utiliser cette méthode utilitaire pour récupérer le nom de la Source en passant le nom du type de publication :

<?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 aucun $source n'est fourni, des valeurs par défaut raisonnables seront gérées en interne lors de l'instanciation.

source (string)
Le nom de la \SearchWP\Source (défaut : null)

Méthodes

relevance( $sql )
Ajoute une clause de calcul de pertinence. Exemple
weight( $sql )
Ajoute une clause de calcul de poids. Note : contrairement à relevance(), le calcul du poids est multiplié par le nombre de correspondances de recherche.
column_as( $sql, $column_name )
Ajoute une clause de modification de colonne.
get_columns()
Obtient les colonnes enregistrées.
get_weights()
Obtient les modifications de poids enregistrées.
get_join_sql()
Obtient le SQL JOIN généré.
raw_join_sql( $sql )
Ajoute une clause SQL JOIN brute.
get_raw_join_sql()
Obtient les clauses SQL JOIN brutes.
raw_where_sql( $sql )
Ajoute une clause SQL WHERE brute.
get_raw_where_sql()
Obtient les clauses SQL WHERE brutes.
get_source()
Obtient la \SearchWP\Source applicable.
set_where( $where )
Définit les clauses WHERE.
get_where()
Accesseur pour les clauses WHERE.
set_local_table( string $table )
Mutateur pour le nom de la table locale.
get_local_table()
Accesseur pour le nom de la table locale.
set_local_table_alias( string $table )
Mutateur pour l'alias de la table locale.
get_local_table_alias()
Accesseur pour l'alias de la table locale.
set_foreign_alias( string $alias )
Mutateur pour l'alias de la table étrangère.
get_foreign_alias()
Accesseur pour l'alias de la table étrangère.
on( string $local, array $foreign )
Ajoute une clause ON.
get_on()
Accesseur pour les clauses ON.
order_by( $column, $direction, $priority )
Ajoute une clause ORDER BY. Exemple
get_order_by()
Accesseur pour les clauses ORDER BY.
set_values( array $values )
Mutateur pour les valeurs de substitution SQL à échapper à l'exécution.
get_values()
Accesseur pour les valeurs de substitution SQL.

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