Cómo ver las publicaciones de la semana pasada en WordPress

Muchos de nuestros lectores de nivel principiante comienzan a editar sus temas de WordPress temprano, es por eso que tenemos una hoja de trucos de temas de WordPress para ayudarlos a comenzar. Esto trae algunos desafíos interesantes para los nuevos usuarios. Uno de estos lectores nos preguntó recientemente cómo ver las publicaciones de la semana pasada en WordPress. Solo querían agregar una sección en su página de inicio que mostrara publicaciones de la semana anterior. En este artículo, le mostraremos cómo ver las publicaciones de la semana pasada en WordPress.

Antes de mostrarle cómo ver las publicaciones de la semana anterior, primero echemos un vistazo a cómo puede ver las publicaciones 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 del 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 descubrimos la semana y el año actuales. Luego usamos esos valores en WP_Query para ver publicaciones de la semana actual. Ahora todo lo que necesitas hacer es agregar <?php wpb_this_week(); ?> en el archivo de tema donde desea ver las publicaciones.

Fue simple, ¿no? Ahora, para ver las publicaciones de la semana pasada, todo lo que necesita hacer es menos 1 del valor de la semana. Pero si esta es la primera semana del año, obtendrá 0 para la semana y el año actual en lugar del año pasado. Así es como solucionas el 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 insertado dos controles. El primer control 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 control establece el valor del año en el último año cuando el valor de la la semana pasada es 52.

Para ver las publicaciones de la semana pasada, todo lo que necesita hacer es agregar <?php wpb_last_week_posts(); ?> al archivo de plantilla del tema en el que desea verlos. O, si desea tener un código corto para poder agregarlo a una página o widget, simplemente agregue esta línea debajo del código anterior.

add_shortcode('lastweek', 'wpb_last_week_posts');

Ahora puede usar este shortcode en una publicación, página o widget como este:

[lastweek]

Tenga en cuenta que WP_Query no siempre es necesario para crear consultas personalizadas. WordPress viene con un puñado de funciones para ayudarlo a ver publicaciones recientes, archivos, comentarios, etc. Si existe una forma más sencilla de utilizar las funciones existentes, no es necesario que escriba sus propias consultas.

Esperamos que este artículo le haya ayudado a ver las publicaciones de la semana pasada en WordPress. Experimente con el código y modifíquelo para adaptarlo a sus necesidades.

¿Te ha resultado útil??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicado. Required fields are marked *