让wordpress与AJAX玩得很好

时间:2010-01-21 04:07:39

标签: ajax wordpress

如何使用AJAX调用中的WP函数。我已经查看了创建使用ajax的插件的文档,但我无法弄清楚如何将其应用于常规页面和帖子。

有没有一种简单的方法可以在不使用API​​的情况下加载所有内容?我有自己的方式,我喜欢做ajax而宁愿不使用他们的东西。

这是我的代码的漏洞版本:

Javascript(jQuery):

$('.action.next_posts').click(function() {
        var last_date = $(this).attr('title');
        //alert();
        $.ajax({
            url: WP_DIR+'functions.php?action=get_next_posts',
            type: 'POST',
            data: {date : last_date},

            success: function(response) {
                alert(response);
            },

            error: function(error) {
                alert("error");
            }
        });

    });

Functions.php(PHP):

// AJAX controller

if(isset($_GET['action'])) {
    require_once('../../../wp-config.php');

    require_once('../../../wp-includes/classes.php');
    require_once('../../../wp-includes/functions.php');

    wp();
    echo 'ok';
    echo bloginfo('name'); // NOT WORKING. TRIED adding actions..
    return;
}

1 个答案:

答案 0 :(得分:2)

以下解决方案应该有效。您将继续直接发布到WordPress安装并在WordPress执行通常所做的所有查询之前拦截请求。这个方法有一些注意事项,其中一个是一些缓存方法会干扰它,但它应该可以很好地用于你的目的。

此外,你说你不想使用指定的WordPress API,所以这应该在你的小巷里。

JavaScript的:

jQuery(document).ready(function($) {
    $('.action.next_posts').click(function(event) {
        event.preventDefault();
        var last_date = $(this).attr('title');
        $.ajax({
            url: '/',
            type: 'post',
            data: {date : last_date, action: 'get_next_posts'},

            success: function(response) {
                alert(response);
            },

            error: function(error) {
                alert("error");
            }
        });

    });
});

的functions.php

add_action('parse_request','my_request_parser');
function my_request_parser($wp) {
    if( 'get_next_posts' == $_POST['action'] ) {
        echo 'ok';
        bloginfo('name');
        exit();
    }
}