El bucle (V) Personalizando el bucle (IV) Restableciendo la consulta

Una vez que hayamos terminado de personalizar nuestro bucle y de realizar nuestras consultas es recomendable restablecer los datos del mismo, para llevar a cabo WP ofrece dos funciones:

  • wp_reset_postdata(), almacena la variable global $post en la entrada actual de consulta principal. Es el metodo recomendado cuando se utiliza WP_Query, tan solo hay que introducirla al final de nuestro bucle para que se restablezca la consulta por defecto:

<?php
// la consulta
$the_query = new WP_Query( 'category_name=noticias' );
// el bucle
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
echo the_excerpt();
}
echo '</ul>';
} else {
// en caso de no encontrar posts
}
/* Restauracion del Post Data original */
wp_reset_postdata();
?>

  • wp_reset_query(), puede que en ocasiones produzca errores con etiquetas condicionales, como is_home(), al crearse un bucle personalizado, pero con esta función esto no ocurre, ya que restablece la consulta original y las etiquetas condiciones, incluidas en el proceso de análisis de la URL.

La función wp_reset_query() invoca en su trabajo a wp_reset_postdata(), pero ademas destruye la consulta anterior antes de restablecerla.

De forma general podemos decir que:

  • wp-reset-query() siempre debe utilizarse tras un bucle query_posts()
  • wp_reset_postdata() debe usarse despues de un bucle con WP-Query o get_posts()