web-dev-qa-db-ja.com

複数のクエリでもっと投稿を読み込む

私はもっ​​と多くのAjaxプラグインを使用するテーマを開発してきました。すべてがセットアップされていて、メインのクエリでうまく機能しています。

ただし、人気のある投稿に対して新しいクエリを設定すると、人気のある投稿に対する[more more posts]ナビゲーションを実行すると、メインクエリの次の投稿が読み込まれます。代わりに人気のある投稿の次の投稿ページを読み込むようにする方法はありますか?

これがインデックスファイルです。

<?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(); ?>

そして、これはより多くの投稿プラグインコードです:

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;
    });
});

任意の助け/アドバイスは大歓迎です、ありがとう。

1
user156

あなたがあなたの質問をリセットしていないように見えます、それでWordPressはあなたがすでに得た投稿に対して新しい質問を実行しています。

最初のクエリの後に以下を追加します。

wp_reset_query();

The Loop以外のクエリの後は常にリセットされます。

これがコーデックスページです: http://codex.wordpress.org/Function_Reference/wp_reset_query

1
AJ Zane