使用带有分页和自定义子查询的AJAX

时间:2011-08-17 作者:gaoshan88

我有一个页面,它使用三个查询来检索各种内容。其中一个查询获取与页面主题相关的帖子。由于这些帖子可以是各种各样的,并通过各种方法(各种魔术字段定义的值、它们的类别等)进行关联,因此我使用自定义查询来获取它们(在这里我构建了一些参数并将它们传递给WP\\u query(),如下所示:$collected_child_posts = new WP_Query($args);

目前我一次返回5个结果(在我的参数中\'posts_per_page\' => 5) 我想使用ajax对这些结果进行分页,这样当您单击MORE POSTS 链接

我通过将url添加到MORE POSTS 按钮看起来像?paged=n 然后通过ajax检索。问题是,当我只需要帖子本身时,我就可以取回整个页面(包括所需的帖子)。

如何从子查询中只检索这些帖子而不返回整个页面,您有什么想法吗?

谢谢

1 个回复
SO网友:Milo

两个选项-

使用加载页面片段jQuery\'s load method (请参阅加载页面片段),

或者创建您自己的ajax函数来加载帖子并以您想要的任何标记返回帖子:

add_action(\'wp_ajax_my_ajax_get_posts\', \'my_ajax_callback\');
add_action(\'wp_ajax_nopriv_my_ajax_get_posts\', \'my_ajax_callback\');
function my_ajax_callback() {
    $args = $_POST[\'myargs\'];
    $collected_child_posts = new WP_Query($args);
    echo \'some stuff\';
    die();
}
通过将管理ajax url传递给javascriptwp_localize_script, 或者通过直接将其放入模板中admin_url(\'admin-ajax.php\');

然后打电话admin-ajax.php 并传递ajax操作:

jQuery(document).ready(function($){
    $.post(your_ajaxurl, {
        action: \'my_ajax_get_posts\',
        myargs: args
    },
    function(data) {
        alert(data);
    });
});
第一种方法显然更简单,但第二种方法在服务器上更容易,因为以这种方式执行ajax调用所加载的WP要少得多,而且发送的数据也更少。

结束

相关推荐

AJAX wp-MySQL运行太慢

我做了一个ajax函数,它返回所有以特定字母开头的帖子,假设用户单击字母a,那么所有以字母a开头的帖子都会显示出来,无论我如何成功地运行此函数,但前提是我使用普通mysql,但我想使用wp mysql,我的代码将代表我;)echo $_GET[\'letter\']; $getLetter = $_GET[\'letter\']; global $wpdb; global $post; $result = $wpdb->get_results(\'SELEC