Làm cách nào để làm cho các bình luận hoạt động cho một bài đăng được tải trên mỗi Ajax?


10

Tôi hiện đang tải một bài viết bằng cách sử dụng ajax. Trong khi tải bài đăng hoạt động tốt, tôi không thể tải ý kiến. Đây là mã của tôi:

Javascript của tôi để tải bài viết:

<script>
$(".view_post").click(function(e) {
    e.preventDefault();
    postid = $(this).attr("rel");
    $.ajax({
        url:"/wp-admin/admin-ajax.php",
        type:'POST',
        data:'action=posts_open&postid='+postid,
        success: function(html){
            $("#b_contentwrapper").empty();
            $("#b_contentwrapper").append(html);
        }
    });
});
</script>

Các javascript đi qua hàm.php theo cách này:

function implement_posts()
{
    //<?php
    get_template_part( 'loop', 'single' );
    die();
}

Bây giờ đây là mã nơi tôi thực sự tải nội dung bài viết của mình:

<?php
    $linkid = "p=".$_POST["postid"];
    $posti = new WP_Query($linkid);
    $posti->the_post();
    echo "Time: ";
    the_time('F jS, Y');
    echo "<br />";
    the_category(', ');
    echo "<br />";
    the_title();
    echo "<br />";
    the_content();
    echo "<br />";
    comment_form();
    ?>
    </div>
    <?php if (have_comments()) {
        echo "Comments ok";
    }
    else
    {
        echo "No comments";
    }
    ?>

Bây giờ, ngay cả đối với các bài đăng có bình luận tôi vẫn nhận được "Không có bình luận". Mọi thứ khác hoạt động chính xác. Bất cứ ai có thể giúp tôi ra?

Cảm ơn bạn.


$linkid = "p=".$_POST["postid"];không phải là verry sql tiêm an toàn. mặc dù wordpess kiểm tra điều này bạn có thể muốn tự làm điều đó.
RTB

Câu trả lời:


1

Để trích dẫn Codex về have_commentschức năng:

Hàm này phụ thuộc vào đối tượng $ wp_query toàn cầu được đặt - đây thường là trường hợp từ bên trong The Loop

Vấn đề là trình xử lý ajax của bạn tạo đối tượng WP_Query của riêng nó. Lưu ý rằng bạn không gọi the_post(), thay vào đó bạn đang gọi $posti->the_post(). Logic tương tự áp dụng cho ý kiến ​​là tốt.

Hãy thử như sau:

if ($posti->have_comments()) {
    echo "Comments ok";
}  else {
    echo "No comments";
}

0

Theo ý kiến ​​của tôi, sẽ tốt hơn nếu đi với một JQuery .load($[this].attr('href') '.div-with-content-and-comment');

Hơn chắc chắn rằng bạn có một tệp.php có đánh dấu với class="div-with-content-and-comment"bạn muốn tải qua ajax.


0

Nhìn vào nguồn của have_comments()- kiểm tra này lấy dữ liệu từ $wp_queryđối tượng toàn cầu , không được sử dụng trong trường hợp của bạn.

Vì vậy, bước đầu tiên sẽ là thay thế have_comments()kiểm tra với $posti->have_comments().

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.