Escludere pagine dai risultati di ricerca in WordPress
Come posso escludere pagine riservate a membri loggati dai risultati di ricerca di WordPress?

Aggiungi questo al file functions del tuo child theme utilizzando un editor di codice come Notepad++.
Dovrai modificare gli ID delle pagine nel codice con i tuoi.
Escludere Pagine Specifiche dai Risultati di Ricerca
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;
}
Escludere Tutte le Pagine dai Risultati di Ricerca
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' );
}

Potresti aver bisogno del controllo $query->is_main_query()
anche quando escludi una pagina specifica.

volevo anche più dei soli post. $query->set('post_type', array( 'post', 'OTHER_POSTTYPE' ) );

Aggiungi il seguente codice al file functions.php del tuo tema
Funziona perfettamente sul sito del mio cliente.
//Escludi tutto tranne gli articoli dalla ricerca di 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');
}

Puoi utilizzare questo codice nel file functions.php
del tuo tema. Nota che non l'ho testato.
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;
}
Ho preso l'idea da WPBeginner.
Termini di utilizzo al momento della scrittura: "(...) Sei il benvenuto a fare riferimento ai nostri snippet e hack sui tuoi blog/siti purché ci dia pieno credito da quell'articolo.
