Ajax 당로드 된 게시물에 주석을 달려면 어떻게해야합니까?


10

현재 ajax를 사용하여 단일 게시물을로드하고 있습니다. 게시물로드가 정상적으로 작동하지만 주석을로드 할 수 없습니다. 내 코드는 다음과 같습니다.

게시물을로드하는 내 자바 스크립트 :

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

자바 스크립트는 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 injection 안전하지 않습니다. wordpess가 이것을 확인하지만 직접 할 수도 있습니다.
RTB

답변:


1

have_comments함수 에서 코덱을 인용하려면 :

이 함수는 설정 될 전역 $ wp_query 객체에 의존합니다-이것은 일반적으로 The Loop 내에서 발생합니다

문제는 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.