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 :
- Élargir l'index pour contenir tous les statuts de publication applicables
- 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
|
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 ); |

