Bagaimana cara membuat komentar berfungsi untuk posting yang dimuat per Ajax?

10

Saat ini saya sedang memuat satu posting menggunakan ajax. Meskipun pemuatan posting berfungsi dengan baik, saya tidak bisa mendapatkan komentar untuk dimuat. Ini kode saya:

Javascript saya untuk memuat posting:

<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>

Javascript melewati functions.php dengan cara ini:

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

Sekarang inilah kode tempat saya memuat konten tulisan saya:

<?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";
    }
    ?>

Sekarang, bahkan untuk posting yang memiliki komentar saya mendapatkan "Tidak ada komentar" ditampilkan. Segalanya bekerja dengan benar. Adakah yang bisa membantu saya?

Terima kasih.

Yash
sumber
$linkid = "p=".$_POST["postid"];tidak aman injeksi verry sql. meskipun wordpess memeriksa ini, Anda mungkin ingin melakukannya sendiri.
RTB

Jawaban:

1

Mengutip Codex pada have_commentsfungsi:

Fungsi ini bergantung pada objek $ wp_query global yang akan ditetapkan - ini biasanya merupakan kasus dari dalam The Loop

Masalahnya adalah bahwa penangan ajax Anda membuat objek WP_Query sendiri. Perhatikan bahwa Anda tidak menelepon the_post(), sebaliknya Anda menelepon $posti->the_post(). Logika yang sama berlaku untuk komentar juga.

Coba yang berikut ini:

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

Menurut pendapat saya, akan lebih baik untuk pergi dengan JQuery .load($[this].attr('href') '.div-with-content-and-comment');

Daripada memastikan Anda memiliki single.php yang memiliki markup dengan class="div-with-content-and-comment"Anda ingin memuat melalui ajax.

ifdion
sumber
0

Lihatlah sumber have_comments()- cek ini mengambil data dari $wp_queryobjek global , yang tidak digunakan dalam kasus Anda.

Jadi langkah pertama adalah mengganti have_comments()cek dengan $posti->have_comments().

Jarang
sumber