web-dev-qa-db-fra.com

Pagination Wordpress montrant les mêmes messages sur chaque page

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.

Des idées sur comment améliorer?

Merci

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 fonctionne, mais ne pagine pas. "Older posts" rechargera la page avec l'URL page-2, mais le contenu est exactement le même, ce qui signifie que les mêmes messages sont identiques à ceux de la première page.

Résolu - nécessaire d'utiliser

1
Jason

Vous pouvez remplacer le code avec quelque chose comme ça

<?php
global $wp_query;
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;


query_posts(array('posts_per_page'=>$limit,'paged'=>$paged,'category_name'=>'albertsons, carrs, dominicks, genuardis, heb, kroger, pavillions, publix, randalls,safeway,shop-rite,tom-thumb,vons,whole-foods'));


/* you may want to uncomment the below two lines if you are using custom page template*/
//$wp_query->is_archive = true; 
//$wp_query->is_home = false;

puis appelez normal Post Loop comme

if(have_posts()):
  while(have_posts()):the_post();
   the_content() ;//or so on
  endwhile;
endif; 

Btw, je vous conseillerai d'aller contre query_posts/get_posts et d'utiliser WP_Query

J'espère que cela vous aidera à démarrer :)

2
sbrajesh