web-dev-qa-db-fra.com

Charger plus de messages avec plusieurs requêtes

J'ai développé un thème qui utilise le plugin load more ajax, tout est configuré et fonctionne parfaitement avec la requête principale.

Mais, une fois que j'ai configuré une nouvelle requête pour les publications populaires, la navigation de publications supplémentaires pour les publications populaires charge les publications suivantes de la requête principale. Y a-t-il un moyen de charger à la place la page des prochains articles des articles populaires?

Voici le fichier d'index:

<?php get_header(); ?>

    <div id="blog">
      <h2 class="recent-head">Recent Posts</h2>
        <div class="recent-home-posts">
          <?php $paged = (get_query_var('paged')) ? (int) get_query_var('paged') : 1;
          $my_query = new WP_Query( array( 'posts_per_page' => 2, 'paged' => $paged ) );
while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
            <div class="post clearfix">
              <div class="thumb">
                <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('home-thumb'); ?></a>
                  <span class="cat"><?php the_category(' ') ?></span>
                  <span class="comme"><?php comments_popup_link('0', '1', '%'); ?></span>
              </div>
              <div class="entry">   
                  <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                  <span class="time"><?php the_time('d,F,Y'); ?></span>
                   <p><?php echo excerpt(40); ?></p>
                  <a class="read-more" href="<?php the_permalink(); ?>">Read More</a>
              </div>
            </div>
            <?php endwhile;?>
            <?php include( TEMPLATEPATH . '/load-more.php' );?>
        </div>

      <h2 class="recent-head">Popular Posts</h2>
        <div class="top-home-posts clearfix">
        <div class="topwrap">
<?php 
$paged = (get_query_var('paged')) ? (int) get_query_var('paged') : 1;
$popularpost = new WP_Query( array( 'posts_per_page' => 3, 'orderby' => 'comment_count', 'paged' => $paged  ) );
while ( $popularpost->have_posts() ) : $popularpost->the_post();  ?>
                <div class="top-post">
                    <div class="top-thumb">
                      <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('popular-thumb'); ?></a>
                        <span class="cat"><?php the_category(' ') ?></span>
                        <span class="comme"><?php comments_popup_link('0', '1', '%'); ?></span>
                    </div>
                    <div class="top-entry"> 
                      <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
                        <span class="time"><?php the_time('d,F,Y'); ?></span>
                        <p><?php echo excerpt(20); ?></p>
                        <a class="read-more" href="<?php the_permalink(); ?>">Read More</a>
                    </div>
                </div>
                  <?php endwhile; ?>
            <div class="break"></div>
<div class="navigation-top">
    <?php next_posts_link('Older &raquo;') ?>
</div>
        </div>
        </div>
    </div>
<?php get_sidebar(); ?> 
<?php get_footer(); ?>

Et voici la charge plus de messages plugin code:

jQuery(document).ready(function($) {
        <?php 
$paged = (get_query_var('paged')) ? (int) get_query_var('paged') : 1;
$popularpost = new WP_Query( array( 'posts_per_page' => 3, 'orderby' => 'comment_count', 'paged' => $paged  ) );  ?>
var pbd_alp = {
        startPage: "1",
        maxPages: "<?php echo $popularpost->max_num_pages; ?>",
        nextLink: "<?php bloginfo('url'); ?>/page/2/"
};
    var pageNum = parseInt(pbd_alp.startPage) + 1;

    // The maximum number of pages the current query can return.
    var max = parseInt(pbd_alp.maxPages);

    // The link of the next page of posts.
    var nextLink = pbd_alp.nextLink;

    /**
     * Replace the traditional navigation with our own,
     * but only if there is at least one page of new posts to load.
     */
    if(pageNum <= max) {
        // Insert the "More Posts" link.
        $('.top-home-posts')
            .append('<div class="more-top-posts-page-'+ pageNum +'"></div>')
            .append('<div id="load-more-top"><a href="#">Load More Posts</a></div>');

        // Remove the traditional navigation.
        $('.navigation-top a').remove();
    }


    /**
     * Load new posts when the link is clicked.
     */
    $('#load-more-top a').click(function() {

        // Are there more posts to load?
        if(pageNum <= max) {

            // Show that we're working.
            $(this).text('Loading posts...');

            $('.more-top-posts-page-'+ pageNum).load(nextLink + ' .post',
                function() {
                    // Update page number and nextLink.
                    pageNum++;
                    nextLink = nextLink.replace(/\/page\/[0-9]?/, '/page/'+ pageNum);

                    // Add a new placeholder, for when user clicks again.
                    $('#load-more-top')
                        .before('<div class="more-top-posts-page-'+ pageNum +'"></div>')

                    // Update the button message.
                    if(pageNum <= max) {
                        $('#load-more-top a').text('Load More Posts');
                    } else {
                        $('#load-more-top a').text('No more posts to load.');
                    }
                }
            );
        } else {
            $('#load-more-top a').append('.');
        }   

        return false;
    });
});

Toute aide/conseil est apprécié, merci.

1
user156

On dirait que vous ne réinitialisez pas votre requête, donc WordPress exécute une nouvelle requête sur les publications que vous avez déjà reçues.

Après votre première requête, ajoutez:

wp_reset_query();

Toujours réinitialisé après toute requête autre que The Loop.

Voici la page du codex: http://codex.wordpress.org/Function_Reference/wp_reset_query

1
AJ Zane