\SearchWP\Mod
Table des matières
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 :
- Un tableau de
\SearchWP\Modpeut être passé à\SearchWP\Queryen utilisant l'argument'mods'. - 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. |
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
nomde 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
JOINgénéré. raw_join_sql( $sql )- Ajoute une clause SQL
JOINbrute. get_raw_join_sql()- Obtient les clauses SQL
JOINbrutes. raw_where_sql( $sql )- Ajoute une clause SQL
WHEREbrute. get_raw_where_sql()- Obtient les clauses SQL
WHEREbrutes. get_source()- Obtient la
\SearchWP\Sourceapplicable. 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.

