web-dev-qa-db-fra.com

Pagination Wordpress avec get_posts?

Je dois apporter des modifications à un thème horriblement écrit WP (thème personnalisé écrit dans des tableaux et code incorrect).

Le thème a plusieurs modèles personnalisés, mais la pagination n'a pas été utilisée et get_posts a été utilisé à la place de query_posts -

    <?php query_posts('showposts=1'); ?>
    <?php $posts = get_posts('numberposts=10&offset=0&category_name=albertsons, carrs, dominicks, genuardis, heb, kroger, pavillions, publix, randalls,safeway,shop-rite,tom-thumb,vons,whole-foods'); foreach ($posts as $post) : start_wp(); ?>
    <?php static $count2 = 0; if ($count2 == "10") { break; } else { ?>

...

    <?php $count2++; } ?>
    <?php endforeach; ?>

J'ai besoin que la pagination fonctionne avec get_posts ou que je réécrive la fonction pour qu'elle utilise uniquement query_posts afin de pouvoir ajouter 'paged' => get_query_var('page').

Lorsque j'essaie de réécrire pour utiliser uniquement query_posts, tout se passe comme si de rien n'était.

Mettre à jour:

<?php 
global $wp_query;

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;


query_posts(array('posts_per_page' => '3','paged'=>$paged,'category_name'=>'albertsons, carrs, dominicks, genuardis, heb, kroger, pavillions, publix, randalls,safeway,shop-rite,tom-thumb,vons,whole-foods')); ?>
                    ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

Ce qui montre la boucle, mais la pagination ne fonctionne pas. Si je clique sur "anciens messages", l'URL devient la page 2, mais le contenu est exactement le même.

1
Jason

C'est toutes sortes de faux. D'abord, n'utilisez pas start_wp();. Je pense que cela a été amorti il ​​y a 4 ans. Deuxièmement, votre boucle est en désordre, query_posts permet de modifier la boucle principale, autrement dit pas get_posts.

Donc, écrivez-le normalement en utilisant get_posts ou WP Query.

$args = array( 'numberposts' => 1, 
               'offset'=> 0, 
               'category_name' => 'carrs, dominicks, genuardis, etc', 
                );


$the_query = new WP_Query( $args );

while ( $the_query->have_posts() ) : $the_query->the_post();

$count_posts = $the_query->current_post + 1; // use this to count your posts

//your loop stuff
endwhile;

Si vous ne savez pas comment vous voulez que votre pagination fonctionne, si vous souhaitez simplement que les liens suivants/précédents utilisent <?php previous_post(); ?> <?php next_post(); ?> pour une pagination numérotée vraie, je vous recommande un plugin comme WP-PageNavi ou WP-Paginate qui s'intègre facilement à votre thème par le biais d'une fonction.

http://codex.wordpress.org/Class_Reference/WP_Query
http://codex.wordpress.org/Next_and_Previous_Links

1
Wyck