दिलचस्प पोस्ट
शब्द तुलना एल्गोरिथ्म SQLite3 VACUUM, "डेटाबेस या डिस्क पूर्ण है" शेल स्क्रिप्ट में बूलीयन वैरिएबल कैसे घोषित और उपयोग करें? थ्रेड्स बनाना – टास्क। फ़ैक्टर। स्टार्टन्यू बनाम न्यू थ्रेड () अंगुलियों 2 में * ngFor का उपयोग करके को पुनरावृति कैसे करें जांचें कि स्ट्रिंग में केवल अक्षर हैं आईफ़ोन एप में सर्वर से एक वीडियो फ़ाइल बजाना क्लाउड फंक्शन और फायरबेज फ़ंक्शंस के बीच अंतर क्या है? अनुरोध के बिना सर्वर पोर्ट नंबर टॉमकेट से प्राप्त करें सी अल्पविराम ऑपरेटर का उपयोग जावा में बूलियन का डिफ़ॉल्ट मान JQuery के AJAX अनुरोध के जवाब के रूप में प्रदर्शित PNG छवि सीएसएस चेकबॉक्स इनपुट स्टाइलिंग सी ++ का प्रतिबिंब क्यों नहीं है? जावा में एक तारीख को एन घंटे जोड़ना?

AJAX – WooCommerce एपीआई का उपयोग कर गाड़ी में एक बदलाव जोड़ें?

मेरे पास निम्न डेटा के साथ एक आइटम है:

var item = { id : "124", name : "xxx", price : "13.13", quantity : 1, options : { "size" : "xl", "color": "pink" } }; 

जब उपयोगकर्ता "गाड़ी में जोड़ें" पर क्लिक करता है, तो मैं डब्लूसी एपीआई का इस्तेमाल करते हुए एक अजाक्स अनुरोध करना चाहता हूं और उपरोक्त आइटम को कार्ट में जोड़ता हूं।

 jQuery.ajax({ url: "some/woocommerce/api/add/to/cart/request/path", data: item, type: "POST" }); 

फिर गाड़ी पेज पर मैं WC API का उपयोग करके एक और अजाक्स अनुरोध करना चाहता हूं और गाड़ी की सामग्री को पुनः प्राप्त करना चाहता हूं।

मुझे जावास्क्रिप्ट का उपयोग करने वाले क्लाइंट से ऐसा कैसे करना है पर कोई दस्तावेज़ीकरण (आधिकारिक या अनौपचारिक) नहीं मिला है।

क्या किसी को पता है और मुझे एक उदाहरण के साथ प्रदान कर सकते हैं कृपया?

इसके अलावा, किसी को पता नहीं क्यों WooCommerce Api प्रलेखन इतनी भयानक है (ऊपर की तरह स्पष्ट / मानक प्रश्नों के बारे में किसी भी तरह की जानकारी की कमी) मैं गंभीरता से हमारी कंपनी स्विच को शॉपिविच में बदलने की सोच रहा हूं।

Solutions Collecting From Web of "AJAX – WooCommerce एपीआई का उपयोग कर गाड़ी में एक बदलाव जोड़ें?"

आप जांच कर सकते हैं कि कैसे WooCommerce सीधे includes/class-wc-ajax.php माध्यम से गाड़ी में आइटम जोड़ रहा है कोड में …. कॉलबैक में includes/class-wc-ajax.php WooCommerce पहले से ही उत्पाद "लूप" (उत्पाद अभिलेखागार) पर करता है, इसलिए मुझे नहीं लगता कि आपको पहिया को फिर से बदलने की आवश्यकता है और यदि उनका मौजूदा कोड आपके लिए क्या करने की कोशिश कर रहा है, तो आपको उधार लेने में सक्षम होना चाहिए इसे से भारी

उस फ़ाइल की शुरुआत में सभी WooCommerce Ajax क्रियाओं के साथ एक लूप है, लेकिन हम नीचे ट्रैक कर सकते हैं कि कार्ट में जोड़ें मूल रूप से यह है:

 add_action( 'wp_ajax_nopriv_woocommerce_add_to_cart', array( 'WC_AJAX', 'add_to_cart' ) ); 

और यह कॉलबैक फ़ाइल के नीचे कुछ और है:

 /** * AJAX add to cart */ public static function add_to_cart() { ob_start(); $product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_POST['product_id'] ) ); $quantity = empty( $_POST['quantity'] ) ? 1 : wc_stock_amount( $_POST['quantity'] ); $passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity, $variation_id, $variations, $cart_item_data ); if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity ) ) { do_action( 'woocommerce_ajax_added_to_cart', $product_id ); if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) { wc_add_to_cart_message( $product_id ); } // Return fragments self::get_refreshed_fragments(); } else { // If there was an error adding to the cart, redirect to the product page to show any errors $data = array( 'error' => true, 'product_url' => apply_filters( 'woocommerce_cart_redirect_after_error', get_permalink( $product_id ), $product_id ) ); wp_send_json( $data ); } die(); } 

यदि आप अपने assest/js/frontend/add-to-cart.js कॉल में कार्ट को जोड़ना चाहते हैं, तो इसके लिए जेएस assest/js/frontend/add-to-cart.js

संपादित करें

अब जब मुझे पता है कि आप एक भिन्नता को जोड़ना चाहते हैं, तो शायद हम उपरोक्त बदलाव कर सकते हैं

सबसे पहले, मुझे लगता है कि आपको अपनी स्क्रिप्ट में AJAX यूआरएल पास करना होगा:

 wp_enqueue_script( 'wc-variation-add-to-cart', 'source-to-script/your-script.js' ); $vars = array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ); wp_localize_script( 'wc-variation-add-to-cart', 'WC_VARIATION_ADD_TO_CART', $vars ); 

फिर आपका एजेएक्स कॉल कुछ इस तरह दिखाई देगा:

 jQuery.ajax({ url: WC_VARIATION_ADD_TO_CART.ajax_url, data: { "action" : "woocommerce_add_variation_to_cart", "product_id" : "124", "variation_id" : "125", "quantity" : 1, "variation" : { "size" : "xl", "color": "pink" }, }, type: "POST" }); 

मूल रूप से एक विशिष्ट भिन्नता को जोड़ने के लिए आपको इसके सभी विशिष्ट विकल्पों के अलावा भिन्नता की आईडी की आवश्यकता होती है।

और अंत में woocommerce_add_variation_to_cart एजेक्स कार्रवाई के लिए नया कॉलबैक निम्नलिखित की तर्ज पर होगा:

 add_action( 'wp_ajax_nopriv_woocommerce_add_variation_to_cart', 'so_27270880_add_variation_to_cart' ); function so_27270880_add_variation_to_cart() { ob_start(); $product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_POST['product_id'] ) ); $quantity = empty( $_POST['quantity'] ) ? 1 : wc_stock_amount( $_POST['quantity'] ); $variation_id = isset( $_POST['variation_id'] ) ? absint( $_POST['variation_id'] ) : ''; $variations = ! empty( $_POST['variation'] ) ? (array) $_POST['variation'] : ''; $passed_validation = apply_filters( 'woocommerce_add_to_cart_validation', true, $product_id, $quantity, $variation_id, $variations, $cart_item_data ); if ( $passed_validation && WC()->cart->add_to_cart( $product_id, $quantity, $variation_id, $variations ) ) { do_action( 'woocommerce_ajax_added_to_cart', $product_id ); if ( get_option( 'woocommerce_cart_redirect_after_add' ) == 'yes' ) { wc_add_to_cart_message( $product_id ); } // Return fragments WC_AJAX::get_refreshed_fragments(); } else { // If there was an error adding to the cart, redirect to the product page to show any errors $data = array( 'error' => true, 'product_url' => apply_filters( 'woocommerce_cart_redirect_after_error', get_permalink( $product_id ), $product_id ) ); wp_send_json( $data ); } die(); } 

अधिकतर, मैं बस WooCommerce के दृष्टिकोण की प्रतिलिपि बना रहा हूं और विविधताओं को जोड़ने के लिए आवश्यक 2 चर में जोड़ रहा हूं। पूरी तरह से untested, लेकिन मुझे आशा है कि यह मदद करता है।

अगर किसी को दिलचस्पी है तो मैंने गाड़ी में जोड़ने के लिए "गाड़ी से हटाना" फ़ंक्शन लिखा है। चेकआउट पर रेडियो बटन के लिए मेरी परियोजना को बुलाया गया, इसलिए मुझे एक उत्पाद जोड़ने और पहले से वहां मौजूद विकल्प को निकालने की जरूरत थी:

यहां पीएचपी है:

 function remove_from_cart( $product_id ) { $cart_contents = WC()->cart->get_cart(); if (empty($product_id)) { $product_id = $_POST['product_id']; } foreach ($cart_contents as $product_key => $product){ if ($product['variation_id'] == $product_id){ WC()->cart->remove_cart_item($product_key); } } } add_action( 'wp_ajax_nopriv_remove_from_cart', 'remove_from_cart' ); 

और फिर यहां jQuery है:

 function remove_item_from_cart(product){ var data = { "action" : "remove_from_cart", "product_id" : product, }; jQuery.post(WC_VARIATION_ADD_TO_CART.ajax_url, data, function(response) { $(document.body).trigger("update_checkout"); }); } 

अगर (रिक्त) … तो php में था इसलिए मैं फ़ंक्शन को सर्वर साइड से कह सकता हूं, अगर मुझे इसकी आवश्यकता है