NEXT_POSTS_LINK对使用AJAX调用的循环无效

时间:2012-06-25 作者:Pollux Khafra

在我的主页上,我显示了一个帖子循环,我允许用ajax搜索结果和其他自定义循环来替换。这些结果将在带有custom wp_query. 问题是next_posts_link 没有为搜索循环返回第2页的正确链接。我得到的是链接http://mysite.com/wp-admin/admin-ajax.php?paged=2. 下面是我用来返回结果的整个设置。我需要更改什么才能获得正确的分页?

//脚本

jQuery(document).ready(function($){
$(\'#searchsubmit\').click(function(e){
    $(\'#boxes\').empty();
    e.preventDefault();
    var search_val=$("#s").val();
    var $panel = $(this).closest(".panel-container").find(".panel");
    $.post(
        WPaAjax.ajaxurl,
        {
            action : \'wpa56343_search\',
            search_val : search_val
        },
        function( response ) {
            $(\'#boxes\').append( response ).masonry( \'reload\' );
            $panel.hide("slow");
            $(\'.trigger\').removeClass("active");
        }
    );
  });

});
//传递查询参数的函数

add_action(\'wp_ajax_wpa56343_search\', \'wpa56343_search\');
function wpa56343_search(){
 global $wp_query;
 $search = $_POST[\'search_val\'];
 $args = array(
    \'s\' => $search,
    \'posts_per_page\' => 10
 );
 $wp_query = new WP_Query( $args );

 get_template_part( \'search-results\' );

exit;
}
//自定义搜索查询搜索结果。php

<?php
  while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>

   <------content----->

<?php endwhile; ?>

<?php if ( $wp_query->max_num_pages > 1 ) : ?>

<div class="infinitescroll">
  <?php next_posts_link( __( \'Load more posts\', $wp_query->max_num_pages ) ); ?>
</div>

<script type="text/javascript">
 // Infinite Scroll
 var href = \'first\';
 $(document).ready(function() {
$(\'#boxes\').infinitescroll({
    navSelector : \'.infinitescroll\',
    nextSelector : \'.infinitescroll a\',
    itemSelector : \'#boxes .box\',
    loadingImg : \'<?php echo get_bloginfo(\'stylesheet_directory\') ?>/images/loading.gif\',
    loadingText : \'Loading...\',
    donetext : \'No more pages to load.\',
    debug : false
}, function(arrayOfNewElems) {
    $(\'#boxes\').masonry(\'appended\', $(arrayOfNewElems));
    if (href != $(\'.infinitescroll a\').attr(\'href\'))
    {
        href = $(\'.infinitescroll a\').attr(\'href\');
    }
});
  });
 </script>
 <?php endif; ?>

1 个回复
SO网友:Milo

下一篇文章的链接有些毫无意义,因为你是用ajax分页的,不是吗?看看the code from the answer to your other question 如何分页查询-

var postoffset = $(\'.post\').length;
这会计算页面上有多少帖子,然后我将其作为偏移量传递。如果是你的话.box. 当我把它放在查询中时,我会收到从该数字开始的帖子:

$offset = $_POST[\'postoffset\'];
$args = array(
    \'offset\' => $offset,
    \'posts_per_page\' => 10
);
$wp_query = new WP_Query( $args );
这样我就可以使用相同的按钮加载更多的帖子,它只是重复调用相同的函数,检查每次页面上有多少帖子。

结束

相关推荐

如何将JQuery/AJAX放入短码?

这个插件的目的是创建一个列表,用户可以通过向上或向下的投票进行修改。短代码应该显示页面上的列表,并在更新数据库时使用JQuery进行fadeIn和fadeOut。有关该概念的演示,请访问http://bucketlingerwedding.com/80s-music-reception/ (注意:工作代码尚未使用AJAX)。我想把这个插件放在Wordpress存储库中,但AJAX让我很头疼。以下是最新代码。它只显示一个包含空白内容区域的页面。我需要获得这段代码以使用AJAX更新数据库,并避免重新加载页面,