SearchWP Documentation

Consulta la guía de instalación, explora la base de conocimiento, descubre los numerosos hooks de SearchWP

searchwp\post_stati

Desde: 4.0.0

Controla los estados de publicación considerados para Fuentes basadas en \WP_Post.

Ten en cuenta que para que este hook surta efecto correctamente, debes comprender cómo funciona el Índice de SearchWP. El Índice representa el conjunto 'máximo' de resultados potenciales, y las Consultas se ejecutan contra ese Índice para limitar las entradas devueltas.

Dicho esto, para personalizar qué estados de publicación se devuelven en los resultados, debemos seguir un proceso de dos pasos:

  1. Ampliar el Índice para que contenga todos los estados de publicación aplicables
  2. Enganchar las Consultas para asegurar que se devuelvan solo nuestros estados de publicación esperados

? Procede con precaución, ya que el uso inadecuado de este hook puede exponer datos.

Parámetros

Tipo Parámetro Predeterminado Desde
string[] $post_stati Estados de publicación que son públicos y no están excluidos de la búsqueda 4.0.0
Matriz $args
Clave Tipo Valor
motor Cadena Nombre del motor
4.0.0

Ejemplos

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

Incluir borradores en el Motor Suplementario

<?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 );

Cómo usar este código