SearchWP Documentation

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

searchwp\post_stati

Depuis : 4.0.0

Table des matières

Contrôlez les statuts de publication considérés pour les sources basées sur \WP_Post.

Notez que pour que ce hook prenne correctement effet, vous devez comprendre comment fonctionne l'index de SearchWP. L'index représente le pool « maximum » de résultats potentiels, et les requêtes sont exécutées contre cet index pour limiter les entrées retournées.

Cela dit, afin de personnaliser les statuts de publication qui sont retournés dans les résultats, nous devons suivre un processus en deux étapes :

  1. Élargir l'index pour contenir tous les statuts de publication applicables
  2. Accrocher les requêtes pour s'assurer que seuls nos statuts de publication attendus sont retournés

? Procédez avec prudence car une mauvaise utilisation de ce hook peut exposer des données !

Paramètres

Type Paramètre Défaut Depuis
String[] $post_stati Statuts de publication publics et non exclus de la recherche 4.0.0
Array $args
Clé Type Valeur
engine String Nom du moteur
4.0.0

Exemples

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

Inclure les brouillons dans le moteur supplémentaire

<?php
/**
* Include Drafts in SearchWP Supplemental Engine results.
*
* NOTE: In order for this to work we need to first tell SearchWP to index
* ALL of the potential post stati. We can then curate which post stati
* to consider during searches; it is a two-step process.
*/
// Step 1: tell SearchWP to index Drafts in addition to its default post stati.
add_filter( 'searchwp\post_stati', function( $post_stati, $args ) {
$post_stati[] = 'draft';
return $post_stati;
}, 20, 2 );
// Step 2: limit post stati during searches, per post type. By default
// SearchWP is going to respect the stati we defined in Step 1!
add_filter( 'searchwp\query\mods', function( $mods, $query ) {
// If this is the 'supplemental' Engine, search all post stati.
if ( 'supplemental' === $query->get_engine()->get_name() ) {
return $mods;
}
// Only return WP_Posts with 'publish' post status.
foreach ( $query->get_engine()->get_sources() as $source ) {
$flag = 'post' . SEARCHWP_SEPARATOR;
if ( 'post.' !== substr( $source->get_name(), 0, strlen( $flag ) ) ) {
continue;
}
$mod = new \SearchWP\Mod( $source );
$mod->set_where( [ [
'column' => 'post_status',
'value' => [ 'publish' ],
'compare' => 'IN',
] ] );
$mods[] = $mod;
}
return $mods;
}, 20, 2 );

Comment utiliser ce code