Escludere pagine dai risultati di ricerca in WordPress

29 apr 2014, 19:27:34
Visualizzazioni: 13.5K
Voti: 5

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

1
Commenti

Hai già cercato nel sito? Cosa hai provato? Dove hai fallito? Per favore, [modifica] il tuo post con i tuoi tentativi. Grazie.

kaiser kaiser
29 apr 2014 20:09:52
Tutte le risposte alla domanda 3
3
18

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' );
}

Fonte http://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts#Exclude_Pages_from_Search_Results

29 apr 2014 20:07:47
Commenti

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

Z. Zlatev Z. Zlatev
4 ott 2015 16:27:35

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

Adeerlike Adeerlike
9 nov 2015 14:37:56

Qualcuno potrebbe commentare la seconda funzione così posso vedere cosa fa ogni parte. Grazie :)

Pete Pete
18 apr 2016 16:12:13
1
-1

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');
}
31 dic 2019 14:28:02
Commenti

In cosa è diverso / migliore rispetto alla risposta pubblicata e accettata?

kero kero
31 dic 2019 14:35:14
0
-2

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.

29 apr 2014 19:45:14