Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Copa WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

Cómo mostrar las entradas de la semana pasada en WordPress

Muchos de nuestros lectores de nivel principiante pronto comienzan a modificar sus temas de WordPress es por eso que tenemos una hoja de trucos tema de WordPress para ayudarles a empezar. Esto conlleva algunos retos interesantes para los nuevos usuarios. Uno de estos lectores, nos preguntó recientemente cómo mostrar las entradas de la semana pasada en WordPress. Sólo querían añadir una sección en su página de inicio que mostrara entradas de la semana anterior. En este artículo, le mostraremos cómo mostrar las entradas de la semana pasada en WordPress.

Antes de mostrar cómo mostrar las entradas de la semana anterior, veamos cómo mostrar las entradas de la semana actual usando WP_Query. Copie y pegue el siguiente código en el archivo functions. php de su tema o en un plugin específico de su sitio.

function wpb_this_week() { 
$week = date('W');
$year = date('Y');
$the_query = new WP_Query( 'year=' . $year . '&w=' . $week );
if ( $the_query->have_posts() ) : 
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>" title="Permanent link to <?php the_title(); ?> "><?php the_title(); ?></a></h2>
	<?php the_excerpt(); ?>
  <?php endwhile; ?>
  <?php wp_reset_postdata(); ?>
<?php else:  ?>
  <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif;
}

En el código de ejemplo anterior, primero averiguamos la semana y el año actuales. Luego usamos esos valores en WP_Query para mostrar entradas de la semana actual. Ahora todo lo que necesitas hacer es añadir <?php wpb_this_week(); ?> en el archivo de tu tema donde quieras mostrar las entradas.

Ha sido sencillo, ¿verdad? Ahora para mostrar las entradas de la semana pasada todo lo que necesitas hacer es restar 1 del valor de la semana. Pero si esta es la primera semana del año, entonces obtendrá 0 para la semana y el año actual en lugar del año pasado. He aquí cómo corregir este problema.


function wpb_last_week_posts() { 
$thisweek = date('W');
if ($thisweek != 1) :
$lastweek = $thisweek - 1;   
else : 
$lastweek = 52;
endif; 
$year = date('Y');
if ($lastweek != 52) :
$year = date('Y');
else: 
$year = date('Y') -1; 
endif;
$the_query = new WP_Query( 'year=' . $year . '&w=' . $lastweek );
if ( $the_query->have_posts() ) : 
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    <h2><a href="<?php the_permalink(); ?>" title="Permanent link to <?php the_title(); ?> "><?php the_title(); ?></a></h2>
	<?php the_excerpt(); ?>
  <?php endwhile; ?>
  <?php wp_reset_postdata(); ?>
<?php else:  ?>
  <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif;

}

En el código de ejemplo anterior hemos colocado dos marcas / comprobar. El primer comprobador establece el valor de la última semana en 52 (que es la última semana de un año) cuando el valor de la semana actual es 1. El segundo comprobador establece el valor del año en el último año cuando el valor de la última semana es 52.

Para mostrar las entradas de la última semana todo lo que necesitas hacer es añadir <?php wpb_last_week_posts(); ?> al archivo de plantilla de tu tema donde quieras mostrarlas. O si desea tener un shortcode para que pueda añadir esto en una página o un widget, a continuación, sólo tiene que añadir esta línea por debajo del código dado anteriormente.

add_shortcode('lastweek', 'wpb_last_week_posts');

Ahora puede utilizar este shortcode en una entrada, página o un widget como este:

[lastweek]

Tenga en cuenta que no siempre necesita WP_Query para crear consultas personalizadas. WordPress viene con un puñado de funciones para ayudarte a mostrar entradas recientes, archivos, comentarios, etc. Si hay una manera más fácil de usar las funciones existentes, entonces no necesita escribir sus propias consultas.

Esperamos que este artículo te haya ayudado a mostrar las entradas de la semana pasada en WordPress. Experimente con el código y modifíquelo para satisfacer sus necesidades. Háganos saber si tiene alguna pregunta dejando un comentario a continuación o únase a nosotros en Twitter.

Descargo: Nuestro contenido está apoyado por los lectores. Esto significa que si hace clic en algunos de nuestros enlaces, podemos ganar una comisión. Vea cómo se financia WPBeginner , por qué es importante, y cómo puede apoyarnos. Aquí está nuestro proceso editorial .

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

El último kit de herramientas de WordPress

Obtenga acceso GRATUITO a nuestro kit de herramientas - una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Reader Interactions

8 comentariosDeja una respuesta

  1. Ali Hesari

    This is very useful for me. Thank you.

  2. hitesh

    this is very useful for us. keep it

  3. Kenny

    This would be great if a YouTube video was made available

  4. Allison

    I am curious about when/why I would want to display the week’s posts? On my home page, I display excerpts, so the posts from my past 2 weeks or so are visible. What am I missing here? Thanks!

    • WPBeginner Support

      You don’t need to. But some other website owners may have a layout where they might want to display previous week’s posts separately. This tutorial is aimed to help those users.

      Administrador

Deja tu comentario

Gracias por elegir dejar un comentario. Tenga en cuenta que todos los comentarios son moderados de acuerdo con nuestros política de comentarios, y su dirección de correo electrónico NO será publicada. Por favor, NO utilice palabras clave en el campo de nombre. Tengamos una conversación personal y significativa.