Ajaxごとに読み込まれた投稿に対してコメントを機能させるにはどうすればよいですか?


10

現在、ajaxを使用して単一の投稿をロードしています。投稿の読み込みは問題ありませんが、コメントを読み込めません。これが私のコードです:

投稿を読み込むJavaScript:

<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はfunctions.phpを次のように処理します。

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

これが私が実際に投稿コンテンツをロードするコードです:

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

現在、コメントのある投稿でも「コメントなし」と表示されています。それ以外はすべて正常に動作します。誰かが私を助けてくれますか?

ありがとうございました。


$linkid = "p=".$_POST["postid"];verry sqlインジェクションは安全ではありません。wordpessはこれをチェックしますが、自分で実行することもできます。
RTB 2012

回答:


1

have_comments関数でコーデックスを引用するには:

この関数は、設定されるグローバル$ wp_queryオブジェクトに依存します-これは通常、ループ内からの場合です

問題は、ajaxハンドラーが独自のWP_Queryオブジェクトを作成することです。を呼び出すのthe_post()ではなく、を呼び出すことに注意してください$posti->the_post()。同じロジックがコメントにも適用されます。

以下を試してください:

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

0

私の意見では、JQueryを使用する方が良いでしょう .load($[this].attr('href') '.div-with-content-and-comment');

それでは、class="div-with-content-and-comment"ajax経由でロードしたいのマークアップを含むsingle.phpがあることを確認してください。


0

のソースをhave_comments()確認してください-このチェック$wp_queryでは、グローバルオブジェクトからデータを取得しますが、この場合は使用されません。

したがって、最初のステップは、have_comments()checkをに置き換えること$posti->have_comments()です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.