Posts sólo con ciertos días desde su publicación, en nuestra sidebar

Primera parte, en la sidebar según su “frescura” (recientes)

Cuando queremos sacar buen provecho de nuestros artículos, siempre puede ser interesante que a lo largo de nuestro blog ciertos de ellos, por ser recientes, permanezcan visibles en alguna parte de la página, por ejemplo en nuestra barra lateral.

Para ello, pondremos nuestro código allí donde creamos mejor (al principio de todo de sidebar.php por ejemplo, o incluso como recordatorio en single.php después del contenido principal), y decidiremos cuántos días permanecerán ahí los posts. En nuestro ejemplo, una semana.

<?php
// sólo 5 posts de la categoría 11
$my_query = new WP_Query('cat=11&showposts=5');

// preguntando a la base de datos...
while ($my_query->have_posts()) : $my_query->the_post();

// especificar cuántos días el post será "aceptablemente fresco" para ser usado, aquí, 7
$goAwayDate = time() - (60 * 60 * 24 * 7);

// captar la fecha del post
$postDate = get_the_time('U');

// si el post es más viejo de lo aceptable, no hacer nada
if ($postDate < $goAwayDate) {

// sino, mostrarlo
} else { ?>

<h1><?php the_title(); ?></h1>
<?php the_excerpt(); ?>

<?php } endwhile; ?>

En este código vamos a recoger hasta 5 artículos que tengan menos de una semana, de una categoría definida (cat=11), y listarlos en la sidebar.

Si no sabemos qué número de identidad tiene la categoría a la que queremos aplicar este truco, podemos usar category_name=cine.

Si quisiéramos aplicar el truco al conjunto de nuestros posts, borraremos la parte cat=11& de nuestro ejemplo.

Segunda parte, “Stickies” en el loop principal

Finalmente conviene recordar que, si lo que nos interesa es listar los posts marcados como “sticky” (lo cual es otro método de hacer permanecer ciertos posts más visibles durante más tiempo, a pesar de que nuevos artículos sean publicados), aquí tenemos el loop para ello.

Deberemos poner el siguiente código justo antes de nuestro loop.

Insistimos, ¡son dos cosas distintas! Lo pongo como recordatorio solamente.

<?php
/* Pilla los posts marcados como sticky */
$sticky = get_option( 'sticky_posts' );

/* Listar los más recientes primero */
rsort( $sticky );

/* Agarrar los 2 más recientes, no más */
$sticky = array_slice( $sticky, 0, 2 );

/* Prepararlos para el output ! */
query_posts( array( 'post__in' => $sticky, 'caller_get_posts' => 1 ) );
?>

Esperamos que estos trucos os sean de utilidad.

Comentarios
  1. Esto:
    // si el post es más viejo de lo aceptable, no hacer nada
    if ($postDate

    Se puede sustituir por esto:
    if ($postDate >= $goAwayDate) {
    Y te estalvías una comparación ;)

    Escrito el19/01/2010
  2. Gracias Marc por la idea.

    Escrito el19/01/2010
  3. luchosa

    Excelente…y muy bien explicado. ;)

    Escrito el20/01/2010

DEJA TU COMENTARIO