La paginación muestra el mismo contenido en todas las páginas

7 feb 2014, 07:32:35
Vistas: 15.3K
Votos: 1

Aquí está mi loop

        $my_query = new WP_Query(array(
                'cat' => -399,  // Excluir la categoría con ID 399
                'posts_per_page' => 6,  // Mostrar 6 posts por página
                'offset' => 5,  // Saltar los primeros 5 posts
                'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1  // Obtener número de página actual
        ));
        if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post(); 
            $imgurl = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
            $finalurl = get_stylesheet_directory_uri(). "/functions/thumb.php?w=180&h=180&a=t&src=".$imgurl;
            $date = get_the_date(); 
            $id = $post->ID;
        ?>
        .... contenido del loop ....

        <?php $finalurl = "";
        endwhile;
        else: ?>
        <p><?php _e('Lo sentimos, no hay posts que coincidan con tus criterios.'); ?></p>
        <?php endif; wp_reset_query();
        $id = ""; wp_pagenavi();  // Mostrar paginación

La paginación muestra el mismo contenido en todas las páginas. Necesito tus sugerencias.

0
Todas las respuestas a la pregunta 4
1

Prueba cambiando $my_query por $wp_query para ver si eso soluciona el problema. Descubrí que cuando renombras la consulta afecta a la paginación.

También deberías mover el reset de la consulta después de la paginación. Aquí tienes un bucle que he verificado que funciona con paginación:

$args = array(
    'posts_per_page' => 10,
    'post_type'      => 'post',
    'paged'          => get_query_var( 'paged' ),
);
$wp_query = new WP_Query( $args );
while ( $wp_query->have_posts() ) : $wp_query->the_post();
    get_template_part( 'templates/content', 'posts' );
endwhile;

/*
  PAGINACIÓN
*/
if ( function_exists( 'page_navi' ) ) {
    ?>

    <div id="pagination">
        <?php page_navi(); ?>
    </div>
<?php }
wp_reset_query(); ?>
7 feb 2014 09:14:33
Comentarios

Gracias, de hecho acabo de agregar 'paged' => get_query_var( 'paged' ), a mis argumentos y solucionó el problema de paginación inmediatamente.

Jesse Nickles Jesse Nickles
28 ene 2024 17:01:03
0

Si usas wp_pagenavi en la página de inicio (front page), no funcionará. Necesitas cambiar el valor de current paged en la función wp_pagenavi así:

// Modifiqué el código a continuación, puedes ver la diferencia con el tuyo.


if(!empty($paged)) {
    $paged = $paged;
}elseif(get_query_var( 'paged')) {
    $paged = get_query_var('paged');
}elseif(get_query_var( 'page')) {
    $paged = get_query_var('page');
}else {
    $paged = 1;
}
7 feb 2014 10:24:36
0

Aquí hay una mejora a la respuesta de @Devin-Walker. Esto es específicamente para archive.php pero puede adaptarse para otros loops.

También utiliza los enlaces de navegación nativos de WordPress en lugar de page_navi().

Espero que esto ayude a alguien.

<?php
/**
 * Página de Archivo
 *
 * @Desde   1.0
 */

// Salir si se accede directamente
if ( !defined('ABSPATH')) exit;
?>

<?php get_header(); ?>

<div class="container">
    <div class="row">
        <?php 

        // Nota - Configurar el número de posts por página en WP-Admin > Ajustes > Lectura > 'Las páginas de blog muestran como máximo'
        $args = array(
            'post_type'                 => 'post',
            'paged'                     => get_query_var('paged'),
            'cat'                       => get_query_var('cat'),
        );

        $wp_query = new WP_Query( $args );

        while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>

            <div class="col-md-4 post-card archive my-4">

                <div class="text-center">
                    <a href="<?php the_permalink(); ?>"><img src="<?php echo the_post_thumbnail_url('card-size'); ?>" alt="<?php the_title(); ?>" title="<?php the_title(); ?>"></a>
                </div>
                <div class="post-card-details archive-post-details px-4 pb-2">
                    <h3 class="post-card-category px-4 py-2"><?php single_cat_title(); ?></h3>
                    <h3 class="post-card-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                    <p class="post-card-p"><?php echo apply_filters( 'the_content', wp_trim_words( strip_tags( get_post_field('post_content') ), 15 ) ); ?></p>
                </div>

            </div>

        <?php endwhile; ?>

    </div>

    <!-- Navegación -->
    <div class="tablet-pill tablet-pill-purple mb-5"><?php previous_posts_link( 'Página Anterior' ); ?> <?php if(get_previous_posts_link() && get_next_posts_link()) echo ' - '; ?> <?php next_posts_link( 'Página Siguiente' ); ?></div>

    <?php wp_reset_query(); ?>

</div>

<?php get_footer();
7 oct 2017 21:00:50
0

Sé que esto fue hace años, pero traigo otra solución para cualquiera que esté experimentando un error similar. En mi caso, estaba usando un offset de 0, así que eliminé el offset de los argumentos de la consulta, lo cual estaba causando el problema. Espero que esto ayude a alguien más:

Antes

$query_args_pagination = array(
          'post_type' => $post_type_pagination,
          // 'posts_per_page' => $countPPP,
          'post_status'    => 'publish',
          'order'          => 'ASC',
          'orderby'        => 'date',
          'posts_per_page' => '12',
          'offset'         => '0',
          'paged' => $paged_pagination,
          // 'page' => $paged_pagination,
          // 'orderby' => 'date',
          'tax_query' => array(
            array(
              'taxonomy' => $taxonomy_pagination,
              'field' => 'slug',
              'terms' => $categoria_pagination,
            )
          )
        );

Después

$query_args_pagination = array(
          'post_type' => $post_type_pagination,
          // 'posts_per_page' => $countPPP,
          'post_status'    => 'publish',
          'order'          => 'ASC',
          'orderby'        => 'date',
          'posts_per_page' => '12',
          // 'offset'         => '0',
          'paged' => $paged_pagination,
          // 'page' => $paged_pagination,
          // 'orderby' => 'date',
          'tax_query' => array(
            array(
              'taxonomy' => $taxonomy_pagination,
              'field' => 'slug',
              'terms' => $categoria_pagination,
            )
          )
        );
15 dic 2023 17:08:05