query_posts con paginación no funciona

3 minutos de lectura

avatar de usuario
Conservatorio rojo

Estoy tratando de hacer que la paginación funcione con el siguiente código, pero no tuve suerte:

$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    'cat' => '5',
    'post_type' => 'post',
    'posts_per_page' => 6,
    'paged' => $page,
);

query_posts($args);

while(have_posts()) {
    the_post(); ?>
    <div class="project_item">
        <div class="dotted">
            <hr />
        </div>
        <div class="project_thumb"><a href="https://stackoverflow.com/questions/4648956/<?php echo get_permalink(); ?>"><img src="<?php getCustomField('news_thumbnail'); ?>" /></a></div>
        <div class="project_entry"><h4><a href="https://stackoverflow.com/questions/4648956/<?php echo get_permalink(); ?>"><?php getCustomField('news_title'); ?></a></h4>
            <?php getCustomField('news_excerpt'); ?>
            <a href="https://stackoverflow.com/questions/4648956/<?php echo get_permalink(); ?>" class="readmore">Read more..</a>
        </div>
    </div>
<?php }

wp_reset_query();  // Restore global post data

  • Es posible que desee intentar preguntar esto en wordpress.stackexchange.com.

    – Mercator

    10 de enero de 2011 a las 17:08


  • ¿Cuántos sitios nuevos de stackexhange se abren cada semana? ¡Gracias!

    – conservatorio rojo

    10 de enero de 2011 a las 20:02

Solo necesitaba agregar enlaces anteriores y siguientes después del bucle:

<div class="navigation">
  <div class="alignleft"><?php previous_posts_link('&laquo; Previous') ?></div>
  <div class="alignright"><?php next_posts_link('More &raquo;') ?></div>
</div>

Código completo:

<?php
     $args = array(
                   'cat' => '5',
                   'post_type' => 'post',
                   'posts_per_page' => 6,
                   'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1),
                   );

    query_posts($args);

while (have_posts()) : the_post();
 /* Do whatever you want to do for every page... */
?>
    <div class="project_item">
        <div class="dotted">
          <hr />
        </div>
        <div class="project_thumb"><a href="https://stackoverflow.com/questions/4648956/<?php echo get_permalink(); ?>"><img src="<?php getCustomField('news_thumbnail'); ?>"  /></a></div>
        <div class="project_entry"><h4><a href="https://stackoverflow.com/questions/4648956/<?php echo get_permalink(); ?>"><?php getCustomField('news_title'); ?></a></h4>
          <?php getCustomField('news_excerpt'); ?>
          <a href="https://stackoverflow.com/questions/4648956/<?php echo get_permalink(); ?>" class="readmore">Read more..</a> </div>
      </div>

      <?php

endwhile;
?><div class="navigation">
  <div class="alignleft"><?php previous_posts_link('&laquo; Previous') ?></div>
  <div class="alignright"><?php next_posts_link('More &raquo;') ?></div>
</div>
<?php
wp_reset_query();  // Restore global post data
?>

Aquí está la solución para que funcione con todos los complementos de paginación:

global $wp_query;
query_posts(
    array_merge(
        array(
        'category__not_in' => 69, //ifu  want to exclude some category
        'posts_per_page' => 9
         ),
        $wp_query->query
    )
);

¿Ha sido útil esta solución?