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.
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