如何在用户向上滚动注释div时使用ajax加载wordpress注释

时间:2013-12-17 19:21:22

标签: php jquery ajax wordpress

过去2天我一直试图这样做,但没有成功。

这是我的代码。

var elementOffse = $('#loadComments').offset().top;

var heigh = $(window).height();

$(window).scroll(function()
{
    var scrollTopp = $(window).scrollTop();
    if (scrollTopp >= (elementOffse - heigh) && loaded == 0)
        {

            loaded = 1;
            $('#loadComments').html('Downloading...'); // Show "Downloading..."

        $.ajax({
            type: "GET",
            url: "loadComments.php"
        }).done(function(data) { // data what is sent back by the php page
        $('#loadComments').html(data); // display data
        });             

    }
});
在loadComments.php中的

我调用函数'comments_template();'。

我想在查询后在#loadComments中加载评论。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

Wordpress有一个内置的AJAX处理程序,使用它可以确保您的AJAX请求可以访问WP的所有优点。

我不能肯定地说没有看到日志,但是如果你正在做一些评论,那很可能涉及WP核心功能,并且由于通用AJAX调用不包括它们,可能会抛出错误

这是一些应该做的技巧 -

var elementOffse = $('#loadComments').offset().top;

var heigh = $(window).height();

$(window).scroll(function(){

    var scrollTopp = $(window).scrollTop();
    if (scrollTopp >= (elementOffse - heigh) && loaded == 0){

        loaded = 1;
        $('#loadComments').html('Downloading...'); // Show "Downloading..."

        var data = {
            type:       'GET',
            action:     'load-comments'
        };

        $.post(ajax_object.ajaxurl, data, function(response){
            $('#loadComments').html(response);
        });           

    }
});

PHP - 如果您愿意,可将其放在functions.php(或任何其他自定义文件)中 -

add_action( 'wp_ajax_nopriv_'.$_POST['ans_name'], 'my_ajax' ); // If user is not logged in
add_action( 'wp_ajax_'.$_POST['ans_name'], 'my_ajax' ); // If user is logged in
function my_ajax(){

    {...do your comments stuff here...}

    die();  // Required for a proper Wordpress AJAX result

}

最后,为了确保正确处理未登录用户的AJAX请求(nopriv挂钩),请将其添加到functions.php(或任何其他自定义包含的文件,如果您愿意)。

<?php
add_action('wp_head', 'plugin_set_ajax_url');
function plugin_set_ajax_url() {
?>
    <script type="text/javascript">
        var ajax_object = {};
        ajax_object.ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
    </script>
<?php
}
?>