Excluir páginas de los resultados de búsqueda en WordPress

29 abr 2014, 19:27:34
Vistas: 13.5K
Votos: 5

¿Cómo puedo excluir páginas para miembros registrados de los resultados de búsqueda de WordPress?

1
Comentarios

¿Ya has buscado en el sitio? ¿Qué has intentado? ¿Dónde has fallado? Por favor, [edita] tu publicación con tus esfuerzos. Gracias.

kaiser kaiser
29 abr 2014 20:09:52
Todas las respuestas a la pregunta 3
3
18

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

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

29 abr 2014 20:07:47
Comentarios

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

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

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

Adeerlike Adeerlike
9 nov 2015 14:37:56

¿Alguien puede comentar la segunda función para que pueda ver qué hace cada parte? Gracias :)

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

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

¿En qué se diferencia/mejora esto de la respuesta publicada y aceptada?

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

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.

29 abr 2014 19:45:14