Excluir entradas fijas del «loop»

sticky

Las entradas fijas, o «sticky» son una funcionalidad estupenda de WordPress que utilizan la inmensa mayoría de los temas, pero no siempre es buena idea que se muestren en la portada de tu sitio como tales.

Y esto es así porque, por ejemplo, cualquier usuario con el perfil de Autor podría marcar entradas como fijas sin un control editorial, por ejemplo, con lo que alteraría el diseño final de la portada, destacando entradas que igual no tendrían porqué tener esa visibilidad extra.

No digamos cuando las entradas fijas tienen un estilo distinto, aplicado en la hoja de estilos del tema. Entonces podría quedar incluso horrible en una «guerra de entradas fijas» de los autores del sitio.

Las entradas fijas tienen sentido para información importante, que requiere permanecer en la parte superior o destacada de tu sitio, pero una mala gestión podría convertir esta funcionalidad en más un problema que una solución.

Si es tu caso, o consideras que puedes prescindir de esta funcionalidad, puedes excluirlas de dos maneras …

… Quitar la funcionalidad «fija» de las entradas …

Al mostrar una lista de entradas recientes, por ejemplo, seguramente no quieras que se muestren entradas fijas sino que sigan una secuencia temporal «normal«.

Para ello hay que quitar la característica de entradas «fijas« usando query_posts de manera que se ignoren las entradas marcadas como fijas y se muestren en sentido cronológico.

Para ello necesitarás modificar el «loop« de manera que las entradas marcadas como fijas se muestren, pero sin esa característica sino como cualquier otra entrada.

El «loop» resultante sería así:

<?php
$args = array(
        'posts_per_page' => 10,
        'ignore_sticky_posts' => 1
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
?>

… Quitar las entradas fijas totalmente …

Ahora bien, puedes ir un paso más adelante y hacer desaparecer del «loop» totalmente las entradas marcadas como fijas.

Esto sería útil, por ejemplo, en temas que usen un sistema distinto para destacar entradas en un carrusel, aún manteniendo la funcionalidad de entradas fijas, que podrían entrar en conflicto. O cualquier otra situación en la que se te ocurra que no deben aparecer las entradas fijas en el «loop«.

En este caso el «loop» a utilizar sería de este modo:

<?php
$the_query = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) );
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
?>

Con este código no se mostraría ninguna entrada marcada como fija en el «loop«, vamos, que desaparecerían de tu «loop«.

Referencias:

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(0 votos, promedio: 0)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

3 comentarios en “Excluir entradas fijas del «loop»”

  1. Manuel Vicedo

    Un apunte: esto lo que hace es crear una nueva consulta a la base de datos, con lo que el rendimiento es menor. Para modificar la consulta original, habría que usar el hook pre_get_posts y modificar las variables de la query.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido