Excluir páginas de los resultados de búsqueda en WordPress
Añade esto al archivo de funciones de tu tema hijo usando un editor de código como Notepad++.
Necesitarás cambiar los ID's de página en el código por los tuyos propios.
Excluir páginas específicas de los resultados de búsqueda
add_filter( 'pre_get_posts', 'exclude_pages_search_when_logged_in' );
function exclude_pages_search_when_logged_in($query) {
if ( $query->is_search && is_user_logged_in() )
$query->set( 'post__not_in', array( 1, 2, 3, 4, 5 ) );
return $query;
}
Excluir todas las páginas de los resultados de búsqueda
add_action('pre_get_posts','exclude_all_pages_search');
function exclude_all_pages_search($query) {
if (
! is_admin()
&& $query->is_main_query()
&& $query->is_search
&& is_user_logged_in()
)
$query->set( 'post_type', 'post' );
}

Es posible que necesites la verificación $query->is_main_query()
al excluir una página específica también.

también quería más que solo publicaciones. $query->set('post_type', array( 'post', 'OTHER_POSTTYPE' ) );

Añade el siguiente código al archivo functions.php de tu tema
Funciona perfectamente en el sitio de mi cliente.
// Excluir todo excepto entradas de la búsqueda de WordPress
if (!is_admin()) {
function wse_search_filter($query) {
if ($query->is_search) {
$query->set('post_type', 'post');
}
return $query;
}
add_filter('pre_get_posts','wse_search_filter');
}

Puedes usar este código en el archivo functions.php
de tu tema. Ten en cuenta que no lo he probado.
add_filter( 'pre_get_posts', 'SearchFilter' );
function SearchFilter( $query ) {
if ( $query->is_search ) {
$query->set( 'post__not_in', array( 2, 5, 12, 14, 20 ) );
}
return $query;
}
Obtuve la idea de WPBeginner.
Términos de uso cuando esto fue escrito: "(...) Eres bienvenido a referenciar nuestros fragmentos y trucos en tus propios blogs/sitios siempre y cuando nos des crédito completo desde ese artículo.
