php - वोकॉमर्स में हेडर कार्ट आइटम की गणना करें




jquery ajax (2)

जब आप अपनी पोस्ट में कहते हैं तो मैंने इससे पहले woocommerce का उपयोग नहीं किया है, लेकिन एक बहुत ही सरल विकल्प

जब मैं इस पृष्ठ पर जाता हूं तो यह वर्तमान आइटम योगों को दर्शाता है, लेकिन मुझे यह डेटा JQuery से प्राप्त नहीं होगा

... प्रदर्शन के लिए उपयोगकर्ता-तरफा जावास्क्रिप्ट चर का उपयोग करना होगा, और फिर AJAX का उपयोग करके अपने कार्ट में आइटम जोड़ने के लिए बस PHP अपडेट विधियों को कॉल करें (जो मैं नीचे नहीं दिखाता क्योंकि आपने वह कोड प्रदान नहीं किया है)।

<?php
    //hardcoded value for $woocommerce->cart->get_cart_contents_count()
    $woocommerce = 59;
?>
<button class="ajax_add_to_cart">Add to cart</button>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
    //user sided variable for PHP value
    var total = parseInt($(".totalCost").text()); 
    $(".ajax_add_to_cart").click(function(){
        total++;                     //add to cart
        $(".totalCost").text(total); //update
    });
});
</script>

<p class="totalCost">
    <?php echo json_encode($woocommerce); ?>
</p>

आप इस स्निपेट को कॉपी और टेस्ट कर सकते हैं: http://phpfiddle.org/

मूल रूप से उपरोक्त कोड में, मैं PHP मान को पेज लोड पर एक पैरा टेक्स्ट के रूप में सेट करता हूं और फिर उस मूल्य को JS वेरिएबल में पढ़ता हूं जो एप्लिकेशन के क्लाइंट साइड पर डेटा के साथ गड़बड़ करने के लिए और फिर मैं आवश्यकतानुसार डिस्प्ले टेक्स्ट को अपडेट करता हूं।

मैं WordPress के लिए एक कस्टम woocommerce एकीकृत विषय बना रहा हूं।

मेरे पास शीर्ष पर एक बूँद है जो गाड़ी में कुल वस्तुओं को प्रदर्शित करता है, मैं इस बूँद को Jquery (w / o पृष्ठ को पुनः लोड करना) का उपयोग करके अद्यतन करना चाहता हूं मैं वर्तमान संख्या प्राप्त करके वस्तुओं की संख्या बढ़ाने में सक्षम था। बूँदें और प्रत्येक क्लिक के लिए इसे 1 से बढ़ाना, समस्या यह है कि कार्ट में जोड़ें उन कार्ट की संख्या का चयन करने का विकल्प है जिन्हें आप कार्ट में जोड़ना चाहते हैं। इसलिए अगर मैं 3 आइटम का चयन करता हूं और बटन पर क्लिक करता हूं तो बूँद केवल एक बढ़ जाती है।

मैं सामने वाले छोर से जोड़े जा रहे आइटमों की संख्या प्राप्त करने का एक तरीका बना सकता हूं लेकिन मुझे लगता है कि यह अनावश्यक है। मैं jquery का उपयोग करके PHP सत्रों से कुल संख्या प्राप्त करने में सक्षम होना चाहता हूं ताकि आइटम जोड़ने या हटाने वाले आइटम के प्रत्येक क्लिक पर मुझे सर्वर से वर्तमान संख्या गतिशील रूप से मिल जाए।

मैंने अब तक जो भी किया है, वह reloadCart.php फ़ाइल बनाने के लिए है, जो गाड़ी को कुल मिलाकर इको कोड में बदल देती है

<?php
require('../../../wp-blog-header.php');
global $woocommerce;
echo $woocommerce->cart->get_cart_contents_count();
?>

जब मैं इस पृष्ठ पर जाता हूं तो यह मौजूदा आइटम योगों को दर्शाता है, लेकिन मुझे यह डेटा jquery से मिलता है, यह कुछ समय से है जब मैंने आखिरी बार AJAX का उपयोग किया था, मैंने बहुत लंबे समय तक वेब परियोजनाओं पर काम नहीं किया है, लेकिन मुझे जो याद है, उसके साथ AJAX कॉल जो मैं कर रहा हूं वह सही है।

मैंने प्राप्त () और पोस्ट () कार्य के साथ-साथ सामान्य अजाक्स () फ़ंक्शन का उपयोग करने की कोशिश की है, लेकिन कुछ भी काम नहीं करता है। क्या कोई मदद कर सकता है?

$(".ajax_add_to_cart").click(function () {
   /*$("#bag-total").html(function () {
        var bagTotal = parseInt($(this).html());
        return ++bagTotal;
    });*/
    alert('clicked');
    $.get("<?php echo get_template_directory_uri(); ?>/reloadCart.php", function(data){
        alert("Data: " + data);
    });
}); 

जिन पंक्तियों पर टिप्पणी की गई है, वे वही हैं जिनका मैं पहले उपयोग कर रहा था, सामने की ओर से वर्तमान कार्ट संख्या प्राप्त करके गाड़ी को जोड़ने के लिए।

किसी भी सहायता की सराहना की जाएगी। अग्रिम में धन्यवाद!


जो कोई भी उचित अजाक्स कार्यान्वयन चाहता है, उसके लिए यहां जाने का तरीका है।

कार्यों में

add_action('wp_ajax_cart_count_retriever', 'cart_count_retriever');
add_action('wp_ajax_nopriv_cart_count_retriever', 'cart_count_retriever');
function cart_count_retriever() {
    global $wpdb;
    echo WC()->cart->get_cart_contents_count();
    wp_die();
}

अपनी स्क्रिप्ट फ़ाइल में (यह मानते हुए कि आपने स्क्रिप्ट फ़ाइल को जीत लिया है और स्क्रिप्ट में ajax ऑब्जेक्ट को पारित कर दिया है। आपको इस ब्लॉक को एक setInterval या किसी अन्य jquery कार्रवाई में डालने की आवश्यकता है।

var data = {
  'action': 'cart_count_retriever'
};
jQuery.post(ajax_object.ajax_url, data, function(response) {
  alert('Got this from the server: ' + response);
});




woocommerce