Wordpress:使用AJAX获取下一篇文章

时间:2014-07-16 20:12:09

标签: ajax wordpress post

在查看了jQuery文档和许多stackexchange社区论坛后,我仍然面临着这个问题。从这里和那里拿一点点帮助我走得这么远,但我被困在我现在的位置。

我正在使用ajax请求尝试加载当前显示的帖子之后的下一篇文章。我遇到的唯一问题是当我尝试执行我的php文件中包含的方法时:

<?php

echo getnext();

function getnext(){


$post = get_post($_POST['id']);

$prevPost = get_previous_post();

return $prevPost->post_content;



}
?>

我可以回显正常传递的POST变量,但是一旦我尝试实际调用该方法,我就会得到500内部服务器错误。

我的AJAX请求如下所示:

  setTimeout(function (){

$currid = $('#post_id').val();

$.post("wp-content/themes/stargazer/populate.php",
        {
            "id":$currid
        },
        function(data){
            //$("#academiccontent").html(data);
            alert (data);
        });

$('#academiccontent').animate({ 'opacity': 1 });

 }, 1000);

任何帮助都会非常感激,我已经坚持了很久了。

谢谢!

1 个答案:

答案 0 :(得分:1)

为什么不直接在WordPress中使用AJAX?

最好的方法是在你的主题中添加function.php文件,如下所示:

add_action( 'wp_ajax_getnext', 'getnext' );

function getnext() {
    $post = get_post($_POST['id']);
    $prevPost = get_previous_post();
    return $prevPost->post_content;
    die(); // this is required to return a proper result
}

你的javascript改为:

setTimeout(function (){

    $currid = $('#post_id').val();
    var data = {
         "action": "getnext",
         "id":$currid
    };

    $.post(ajaxurl, data,   
    function(data){
        alert (data);
    });

    $('#academiccontent').animate({ 'opacity': 1 });

}, 1000);

有关WordPress中AJAX的更多信息,请访问:http://codex.wordpress.org/Plugin_API/Action_Reference/wp_ajax_(action)