SearchWP Documentation

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

\SearchWP\Source

\SearchWP\Source est une classe abstraite conçue pour modéliser les types de contenu pour les processus d'indexation et de recherche de SearchWP. Les \SearchWP\Sources sont ajoutés aux Moteurs qui sont à leur tour utilisés lors de l'instanciation d'une \SearchWP\Query.

Dans SearchWP, il existe un certain nombre de \SearchWP\Sources principaux disponibles par défaut, notamment :

Étant donné que ces \SearchWP\Sources sont disponibles par défaut, ils peuvent être utilisés immédiatement lors de la configuration de vos Moteurs.

Utilisation de base

Vous pouvez créer vos propres \SearchWP\Sources pour correspondre à tous les types de contenu personnalisés que vous avez (y compris ceux avec des tables de base de données personnalisées) en utilisant cette classe et le hook searchwp\sources.

<?php
// @link https://searchwp.com/documentation/classes/searchwp-source/
/**
* Adds custom SearchWP\Source for MyCustomSearchWPSource which uses a custom database table.
*/
add_action( 'plugins_loaded', function() {
class MyCustomSearchWPSource extends \SearchWP\Source {
// Unique name for this Source.
protected $name = 'mycustomsource';
// Database column name that provides a unique ID for each entry of the Source.
protected $db_id_column = 'id';
function __construct() {
global $wpdb;
// The database table storing entries.
$this->db_table = $wpdb->get_blog_prefix() . 'my_db_table';
// Labels for this Source.
$this->labels = [
'plural' => 'My Custom Source Entries',
'singular' => 'My Custom Source Entry',
];
// Attributes for this Source. Array of attributes, can be expanded.
$this->attributes = [ [
'name' => 'content',
'label' => 'Entry Content',
'default' => \SearchWP\Utils::get_min_engine_weight(),
'data' => function( $entry_id ) {
// Note: MyWidget is an pseudo-class meant to represent
// a class you're using that represents something like
// WP_Post in that it models the data you are working with.
// Long story short: this method should return the content
// you want to index and make searchable in SearchWP.
return MyWidget::get_content( $entry_id );
},
], ];
}
// Returns a native object e.g. formatted in a way you expect.
public function entry( \SearchWP\Entry $entry, $query = false ) {
// Note: MyWidget is a pseudo-class meant to represent a class
// you're using that represents something like WP_Post in that it
// models the data you're working with.
// Long story short: this method should return whatever it is you
// expect when working 'natively' with your data e.g. for WordPress
// pages a WP_Post is returned. Note that $entry->get_id() returns
// the value in the $db_id_column for this Source.
return new MyWidget( $entry->get_id() );
}
}
// Append this Source to the list of available Sources in SearchWP.
add_filter( 'searchwp\sources', function( $sources ) {
$sources[] = new MyCustomSearchWPSource();
return $sources;
} );
} );

Note : Tout \SearchWP\Source enregistré peut également être supprimé en utilisant le hook searchwp\sources.

Arguments

Il n'y a pas d'arguments lors de l'instanciation d'un nouveau \SearchWP\Source.

Propriétés

Lors de l'extension de \SearchWP\Source, un certain nombre de propriétés doivent être prises en compte.

name (string)
Un nom unique. (défaut : '')
labels (tableau)
Libellés, tableau avec les clés singular et plural. (défaut : [])
db_table (chaîne)
La table de base de données utilisée pour stocker les entrées à indexer. (défaut : '')
db_id_column (chaîne)
La colonne de base de données utilisée pour suivre les identifiants des entrées. (défaut : '')
attributes (tableau)
Les Attributs individuels pour recevoir un poids de pertinence lors de la configuration de cette Source dans un Moteur. (défaut : [])
Tableau d'Attributs ou de tableaux de paramètres d'Attributs, chacun avec les clés suivantes :
'name' (chaîne) Nom de l'Attribut.
'label' (chaîne) Libellé de l'Attribut.
'default' (entier) Poids par défaut (zéro pour omettre par défaut).
'options' (tableau) Facultatif. Définit des instances individuelles de cet Attribut.
'data' (mixte) Définit les données pour cet Attribut lors de l'instanciation d'une Entrée.
– Le 1er paramètre est l'ID de l'entrée tel que défini par $db_id_column
– Le 2ème paramètre (lorsqu'il est applicable) est l'option choisie parmi options
rules (tableau)
Les Règles individuelles pour contrôler la sélection des Entrées comme résultats de recherche. (défaut : [])
Tableau de Règles ou de tableaux de paramètres de Règles, chacun avec les clés suivantes :
'name' (string) Nom de la règle.
'label' (string) Libellé de la règle.
'options' (array) Facultatif. Définit les options individuelles pour cette règle.
'conditions' (array) Facultatif. Définit les conditions individuelles de cette règle.
'values' (array) Facultatif. Définit les valeurs pour chaque option de cette règle.
'application' (mixed) Applique la logique de la règle.
– Le 1er paramètre contient les propriétés de la règle sous forme de tableau
option L'option choisie
condition La condition choisie
value La valeur choisie

Méthodes

Lors de l'extension de \SearchWP\Source, un certain nombre de méthodes sont à considérer.

db_where (retourne array)
Tableau de tableaux de clauses WHERE qui doivent être satisfaits pour l'indexation et la recherche. (défaut : [])
'column' (string) Colonne de la base de données
'value' (mixed) Valeur
'type' (string) Type de valeur(s), peut être 'CHAR' ou 'NUMERIC'
'compare' (string) Méthode de comparaison de la value
Les types de comparaison disponibles incluent : '=', '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS'
entry (retourne mixed)
Lorsqu'un résultat de recherche est trouvé, cette méthode est déclenchée pour récupérer une représentation native de ce résultat. (défaut : stdClass)
– Le 1er paramètre est l'\SearchWP\Entry qui a été trouvé
– Le 2ème paramètre est la \SearchWP\Query qui a trouvé ce résultat (si applicable)
add_hooks
Déclenché lors de l'initialisation de cette Source. Principalement utilisé pour implémenter des hooks afin de faciliter les mises à jour de \SearchWP\Index\Controller lors de la modification du contenu.

Hooks

Il existe un certain nombre de hooks disponibles pour modifier davantage le comportement de \SearchWP\Source :

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