使用QUERY_POST的WordPress AJAX分页

时间:2013-11-07 作者:gray

我有一个列表复选框类别,选中后使用WordPress的管理ajax。php筛选到所选类别的帖子。

一切都很好,但是,我正在努力获得更新的分页。我使用query\\u帖子如下:

$paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;

$args= array
(
 \'post_type\'=>\'course\',
    \'paged\'=>$paged,
    \'posts_per_page\'=>3,
  \'tax_query\' => array(
     array(
    \'taxonomy\' => \'subject\',
    \'field\' => \'slug\',
    \'terms\' => $tags_from_group
    )
    )

);

$posts=query_posts( $args);
然后我将$posts作为数据传回,但我不知道如何访问更新的分页。。

我在想这样的事情:

 $pagedposts=array();
 $pagedposts[\'posts\']=$posts;
 $pagedposts[\'pagination\']=???
因此,在ajax调用成功后,$pagedposts[\'pagination\']将是更新旧pagi所需的数据。。

我发现其他人有这个问题here, 但是没有解决办法。。。

1 个回复
最合适的回答,由SO网友:gray 整理而成

最后我发现不可能更新分页。我加载下一批帖子的方式是设置post offset, 并使用“加载更多”按钮。

因此,在ajax调用中加载更多帖子时,需要传递offset value:

$.ajax({
     url: \'/wp-admin/admin-ajax.php\', 
     type: "POST",
     data: {
            \'action\': \'filter_posts\',
            \'selected_options\':selected_options,
            \'offset\':postoffset
       }//etc...
由于该偏移值将始终更改,因此需要将该值存储在变量中。上面,我使用了“postoffset”

确定偏移值的方法很简单。您可以使用jquery计算当前页面上的帖子数量:

    var postoffset = $(\'.hentry\').length;
在哪里。hentry是我的博士后班的名字。

在php脚本中收到post偏移量后,可以这样设置:

 $args= array
    (
        \'offset\'=>$offset,
        \'post_type\'=>$post_type,
        \'paged\'=>$paged,
        \'posts_per_page\'=>9,
        \'orderby\' => \'title\',
        \'order\' => \'ASC\'
    );
然后将其插入您的query\\u args(以及确定上面的偏移量,我添加了一个“posts\\u per\\u page”选项,可以清楚地看到额外加载的9篇文章,我的文章偏移量每次增加9篇):

$posts=query_posts( $args);
要配置“加载更多”按钮而不是使用分页,您可以在页面上放置一个div或图片,并为其提供一个ID,例如:

<div id="load-more">LOAD MORE </div>
以及jquery:

function load_more_button_listener($){
 $(\'#load-more\').click(function(event){
       event.preventDefault();
        var postoffset = $(\'.hentry\').length;

 // console.log("offset: "+postoffset);

  //call the original ajax function to load more posts, with the new offset:
  load_more_posts($,postoffset);
 });  
}

结束

相关推荐

Ajax page load without reload

我正在编写一个脚本来加载我的页面而不刷新。除了一件事之外,它正在按我想要的方式工作。我的测试场地是http://dev.dog-company.com . 现在只有home About us和FAQ可以使用脚本。主页上有一个通过插件加载的滑块(在主页上单击主页)。当我通过AJAX加载它时,我的脚本并没有按照预期的方式加载它。我不知道为什么。有人能解释一下为什么它不起作用吗?$(\'document\').ready(function() { $(\'a[rel=\"load\"]\').click