web-dev-qa-db-fra.com

WordPress/page/2 ne fonctionne pas

Lorsque vous cliquez sur le lien next_posts_link, il affiche uniquement les mêmes messages que sur la page 1. Il semble fonctionner correctement sur les pages de catégorie et affecte uniquement la page d'accueil (home.php).

Merci!

    <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
<?php query_posts('cat=-683,-3598' . $paged); ?>

Code complet

    <?php get_header(); ?>
    <div id="featured">
            <div id="featured_left">
                <div id="block1">
                <?php query_posts('cat=3598&showposts=1'); ?>
<?php while(have_posts()) : the_post(); ?>

<?php the_post_thumbnail('fbox12'); ?>

<?php endwhile; ?>

                </div>
                <div id="block2">
                <?php query_posts('cat=3598&showposts=1&offset=1'); ?>
<?php while(have_posts()) : the_post(); ?>

<?php the_post_thumbnail('fbox12'); ?>

<?php endwhile; ?>

                </div>
            </div>
            <div id="featured_middle">
                <div id="block3">
                <?php query_posts('cat=3598&showposts=1&offset=2'); ?>
<?php while(have_posts()) : the_post(); ?>

<?php the_post_thumbnail('fbox3'); ?>

<?php endwhile; ?>

                </div>
                <div id="block6">
                <?php query_posts('cat=3598&showposts=1&offset=3'); ?>
<?php while(have_posts()) : the_post(); ?>

<?php the_post_thumbnail('fbox67'); ?>

<?php endwhile; ?>

                </div>
                <div id="block7">
                <?php query_posts('cat=3598&showposts=1&offset=4'); ?>
<?php while(have_posts()) : the_post(); ?>

<?php the_post_thumbnail('fbox67'); ?>

<?php endwhile; ?>

                </div>
            </div>
            <div id="featured_right">
                <div id="block4">
                <?php query_posts('cat=3598&showposts=1&offset=5'); ?>
<?php while(have_posts()) : the_post(); ?>

<?php the_post_thumbnail('fbox45'); ?>

<?php endwhile; ?>

                </div>



            </div>
        </div>


        <div id="left">
        <?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; ?>
   <?php query_posts('cat=-683,-3598&paged=' . $paged); ?>

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                <div class="post_item">
        <?php
if ( has_post_thumbnail() ) {
?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_post_thumbnail('homepage-thumb'); ?></a>
<?php }
else { ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><img src="<?php bloginfo('stylesheet_directory'); ?>/images/no_thumb.png"/></a>
<?php }
?>
        <h2><?php the_category(', '); ?> | <?php the_time('F j, Y'); ?></h2>
        <h1><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h1>
        <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_excerpt(); ?></a>
                </div>
                <?php endwhile; ?>
                    <?php endif; ?>
        <div class="pagenav">
<div class="pagenavright"><?php next_posts_link('Next Entries','') ?></div>
</div> <!-- end navigation -->          
        </div>

    <?php get_sidebar(); ?>

    </div>

<?php get_footer(); ?>
1
Storm3y

N'utilisez jamais query_posts, jamais .

Les 6 premières requêtes peuvent être condensées en un seul WP_Query:

$args = array(
    'cat' => 3598,
    'posts_per_page' => 6
);

$featured = new WP_Query( $args );

if( $featured->have_posts() ){

    $featured->the_post();
    ?>
    your markup for the first post
    <?php

    $featured->the_post();
    ?>
    your markup for the second post
    <?php

    $featured->the_post();
    // etc..

    wp_reset_postdata();
}

Pour la requête principale, utilisez l'action pre_get_posts avec une fonction dans le functions.php de votre thème. Cela évite de gaspiller une requête lorsque vous l'écrasez dans le modèle.

function wpa_exclude_categories( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'category__not_in', array( 683, 3598 ) );
    }
}
add_action( 'pre_get_posts', 'wpa_exclude_categories' );

Vous avez maintenant coupé 6 requêtes de chaque chargement de page, et votre pagination fonctionnera comme par magie, fera une petite danse.

0
Milo
<?php query_posts('cat=-683,-3598' . $paged); ?>

Cette ligne devrait être

<?php query_posts('cat=-683,-3598&paged=' . $paged); ?>
0
Abdul Awal