X

Excluir entradas en el inicio de WordPress

En un artículo anterior vimos cómo excluir páginas de la búsqueda de WordPress, en este caso, siguiendo la misma lógica, veremos cómo excluir entradas en el loop de inicio de un sitio WordPress

 

Resultado Final

 

Generalidades

WordPress por defecto tiene la opción de mostrar en el inicio de tu sitio o una lista de las entradas recientes o una página estática. Lo puedes configurar desde Ajustes > Lectura, tal como se muestra en la siguiente imagen:

 
Sin embargo al mostrar las entradas recientes no es posible configurar qué entradas excluir. En este artículo veremos cómo realizar esto a través de código.

 

Excluir entradas específicas

Para excluir entradas específicas necesitas conocer antes el ID de las entradas, en el siguiente código hemos supuesto que quieres ocultar tres entradas, con los ID 1, 2 y 3

Puedes averiguar el ID de una entrada desde el backend al editar una entrada la url que se crea tiene el ID en el parámetro post. Por ejemplo : http://dominio.com/wp-admin/post.php?post=XXX&action=edit

add_action( 'pre_get_posts', 'dcms_eliminar_entradas_home_page' );

function dcms_eliminar_entradas_home_page( $query ){
    if( $query->is_main_query() && $query->is_home() ) {
        $query->set( 'post__not_in', array( 1, 2, 3 ) );
    }
}

 
En el código anterior:

  • Usamos el hook pre_get_posts, este hook se ejecuta luego que el objeto query es creado pero antes de que la consulta sea ejecutada
  • El hook hace referencia a la función dcms_eliminar_entradas_home_page la cual pasa como parámetro el objeto query
  • Dentro de la función podemos modificar la consulta, sin embargo antes nos aseguramos de que sea la consulta principal del home
  • Luego hacemos las modificaciones usando los argumentos de la clase WP Query

 

Excluir categorías específicas

En base al código anterior podemos hacer modificaciones usando los argumentos de la clase WP Query, en el caso de que quieras excluir todas las entradas de una categoría específica el código sería como se muestra a continuación.

Puedes averiguar el ID de una categoría desde el backend al editar una categoría la url que se crea tiene el ID en el parámetro tag_ID.

add_action( 'pre_get_posts', 'dcms_eliminar_entradas_home_page' );

function dcms_eliminar_entradas_home_page( $query ){
    if( $query->is_main_query() && $query->is_home() ) {
        $query->set('category__not_in',array(1));
    }
}


Este código es similar al código inicial, sin embargo ahora consideramos category__not_in

Adicional a los parámetros que hemos usado: post__not_in y category__not_in, puedes usar diferentes argumentos que te permite la clase WP Query

 

Conclusión

Como has podido ver, tienes la flexibilidad de excluir entradas individuales, o todas las entradas de una categoría específica en la página de inicio de tu sitio WordPress a través de código y evitar el uso de plugins adicionales para realizar esto.

 

Categorías: Core
Etiquetas: funcionalidad

Ver comentarios (4)