टिप्पणियों को अजाक्स प्रति लोड किए गए पोस्ट के लिए कैसे काम किया जाए?


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>

जावास्क्रिप्ट इस तरह से कार्य करता है।

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"];वर्ली एसक्यूएल इंजेक्शन सुरक्षित नहीं है। हालाँकि wordpess यह जाँचता है कि आप इसे स्वयं करना चाहते हैं।
RTB

जवाबों:


1

have_commentsफ़ंक्शन पर कोडेक्स उद्धृत करने के लिए :

यह फ़ंक्शन सेट होने के लिए वैश्विक $ wp_query ऑब्जेक्ट पर निर्भर करता है - यह आमतौर पर लूप के भीतर से होता है

समस्या यह है कि आपका अजाक्स हैंडलर अपना 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"आप अजाक्स के माध्यम से लोड करना चाहते हैं।


0

के स्रोत को देखें have_comments()- यह चेक वैश्विक $wp_queryऑब्जेक्ट के डेटा को पुनर्प्राप्त करता है , जो आपके मामले में उपयोग नहीं किया गया है।

तो पहला कदम have_comments()चेक को बदलने का होगा $posti->have_comments()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.