searchwp\post_stati
Seit: 4.0.0
Steuern Sie die berücksichtigten Post-Stati für \WP_Post-basierte Quellen.
Beachten Sie, dass Sie verstehen müssen, wie SearchWPs Index funktioniert, damit dieser Hook ordnungsgemäß greift. Der Index stellt den „maximalen“ Pool potenzieller Ergebnisse dar, und Abfragen werden gegen diesen Index ausgeführt, um die zurückgegebenen Einträge zu begrenzen.
Um anzupassen, welche Post-Stati in den Ergebnissen zurückgegeben werden, müssen wir daher einen zweistufigen Prozess befolgen:
- Erweitern Sie den Index, um alle zutreffenden Post-Stati aufzunehmen
- Haken Sie die Abfragen ein, um sicherzustellen, dass nur unsere erwarteten Post-Stati zurückgegeben werden
? Gehen Sie mit Vorsicht vor, da eine unsachgemäße Verwendung dieses Hooks Daten preisgeben kann!
Parameter
| Typ | Parameter | Standard | Seit | ||||||
|---|---|---|---|---|---|---|---|---|---|
| String[] | $post_stati |
Post-Stati, die öffentlich sind und nicht von der Suche ausgeschlossen sind | 4.0.0 |
||||||
| Array |
$args
|
4.0.0 |
|||||||
Beispiele
All hooks should be added to your custom SearchWP Customizations Plugin.
Entwürfe in Supplemental Engine einschließen
| <?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 ); |

