WordPress solución error paginación

Si tienes activada o implementada la paginación en tu wordpress y observas que no funciona revisa el archivo de tu plantilla (page.php…). Uno de los errores frecuentes que encontramos es llamar a la función wp_reset_query() o wp_reset_postdata(); antes de llamar a la función de paginación, si es tu caso, la paginación en wordpress no funcionará.

Debes colocar la función wp_reset_query() o wp_reset_postdata(); después llamar a la paginación.

Solucionar error paginación

Problema código después de vaciar el loop

Revisa la plantilla de tu tema donde tengas el código de paginación, en mi caso he creado una nueva template llamada page-productos.php que se encarga de hacer un listado con todos los productos de mipágina. En page-productos.php tengo un loop para mostrar todos los productos:

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array( 'post_type' => 'producto','posts_per_page' =>8,'orderby'=> 'fecha_caducidad', 'order' => 'DESC', ,'meta_key' => 'fecha_caducidad, 'paged' => $paged );
    $wp_query = new WP_Query( $args ); ?>
    <?php if ( $wp_query->have_posts() ) : ?>
    <?php while ( $wp_query->have_posts() ) : $wp_query>the_post(); ?>

//CONTENT PRODUCTO
    <?php endwhile; ?>
   
    <?php endif;  ?>//termina el loop

<?php wp_reset_postdata(); ?> //no va a funcionar

<div class="pagination"><?php llamada_paginacion(); ?></div>

Si después de terminar el loop haces un reset de la consulta la paginación no podrá funcionar ya que el array de consulta está vacío, sin post. La función de paginación divide el número total de post en páginas, con un array vacío no se puede hacer esto.

//No hacer esto antes de llamar a paginación.

<?php wp_reset_postdata(); ?>

Busca en tu código la función que llama a paginación y escribe el código anterior después de la llamada.

//Esto es lo correcto

<?php
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $args = array( 'post_type' => 'producto','posts_per_page' =>8,'orderby'=> 'fecha_caducidad', 'order' => 'DESC', ,'meta_key' => 'fecha_caducidad, 'paged' => $paged );
    $wp_query = new WP_Query( $args ); ?>
    <?php if ( $wp_query->have_posts() ) : ?>
    <?php while ( $wp_query->have_posts() ) : $wp_query>the_post(); ?>

//CONTENT PRODUCTO
    <?php endwhile; ?>
   
    <?php endif;  ?>//termina el loop

<div class="pagination"><?php llamada_paginacion(); ?></div>

<?php wp_reset_postdata(); ?> //el reset después de la llamada a paginación

 

Depende del tema wordpress la llamada a paginación puede ser distinta e incluso puede que no la tengas incluida por defecto. Si en tu tema la paginación no está incluida o necesitas modificarla, aquí te dejo un post de este blog con varias de funciones de paginación para agregar a tu WordPress.

Funciones paginación para WordPress.