2016-06-15 6 views
14

जब मैं WP_Ajax हुक के दौरान प्रोग्राम को क्रमशः अद्यतन करने का प्रयास करता हूं। अर्थात। अगर मैं हटा दें कि update_status समारोह उसमें त्रुटियां नहीं हैWoocommerce: प्रोग्रामेटिक रूप से ऑर्डर स्थिति अपडेट कर रहा है

Warning: DOMXPath::query(): Invalid expression in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 299

Warning: DOMXPath::query(): Invalid expression in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 299

Warning: Invalid argument supplied for foreach() in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 302

Warning: DOMXPath::query(): Invalid expression in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 299

Warning: DOMXPath::query(): Invalid expression in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 299

Warning: Invalid argument supplied for foreach() in /wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php on line 302

:

$order = wc_create_order($order_data); 
$order->add_product(get_product($membership_product_ids[0]), 1); 
$order->set_address($address, 'billing'); 
$order->set_address($address, 'shipping'); 
$order_id = $order->id; 
$order->update_status('completed'); 

मैं निम्नलिखित त्रुटियाँ मिलता है।

+1

मैंने अपने कुछ अतिरिक्त कोड के साथ कोड से ऊपर की कोशिश की, यह बिना किसी त्रुटि के मेरी मशीन पर ठीक काम कर रहा है। क्या आप ऊपर अपना पूरा कोड अपडेट कर सकते हैं ताकि मैं इसे बिल्कुल पुन: पेश कर सकूं। यह सहायक होगा यदि आप WP, WC, ब्राउज़र, ओएस के संस्करण विवरण दे सकते हैं और जहां आपको इन त्रुटियों या स्क्रीनशॉट मिल रहे हैं। –

+0

जब आप ऑर्डर बनाते हैं और बदले गए स्टेटस को पूरा करते हैं तो आपको कोई ईमेल प्राप्त होता है, आपका ऑर्डर बनाया जाता है लेकिन ऑर्डर के बारे में कोई ईमेल पुष्टिकरण प्राप्त नहीं होता है – user5200704

उत्तर

3

मुझे यकीन है कि नहीं कर रहा हूँ, लेकिन आप त्रुटि से बचने के लिए इस चाल new WC_Order($order_id); उपयोग करने का प्रयास कर सकता है,:

// global $woocommerce; // in case of need… 
$order = wc_create_order($order_data); 
$order_id = $order->id; // moving this here 
$_order = new WC_Order($order_id); // here 
$_order->add_product(get_product($membership_product_ids[0]), 1); 
$_order->set_address($address, 'billing'); 
$_order->set_address($address, 'shipping'); 
$_order->update_status('completed'); 

मैं मानता हूँ यह एक अजीब मुद्दा है।

+0

यह दुर्भाग्यवश मेरे लिए त्रुटि को ठीक नहीं करता है लेकिन इस तरह के अजीब कोशिश करने के लिए धन्यवाद मुद्दा! वोट दें! –

+2

@ निकोलसकोस्कोव्स्की मुझे आपके कोड का परीक्षण करने में कोई त्रुटि नहीं मिली है ... कृपया, वास्तव में सहायता प्राप्त करने के लिए, अपने प्रश्न को पूर्ण कोड और अधिक जानकारी के साथ अपडेट करें। धन्यवाद – LoicTheAztec

5

आप जो त्रुटियां देख रहे हैं वे अधिसूचना प्रणाली से आ रहे हैं। आपका कोड स्थिति को ठीक करने में सक्षम दिखाई देता है। Emogrify क्लास का उपयोग HTML टेम्पलेट में इनलाइन सीएसएस उत्पन्न करने के लिए किया जाता है। आप इन त्रुटियों को देख रहे हैं क्योंकि ए) या तो आपने "पूर्ण आदेश" ईमेल टेम्पलेट को ओवरराइड कर दिया है और एक पार्सिंग त्रुटि बनाई है या बी) एक WooCommerce ऐड-ऑन है जो आप जो कर रहे हैं उसके साथ किसी तरह से विरोधाभासी है।

समस्या को ठीक करने के लिए, पहला कदम यह सत्यापित करना होगा कि यह WooCommerce-> सेटिंग्स-> ईमेल-> पूर्ण आदेश के तहत व्यवस्थापक में जाकर अधिसूचना प्रणाली है और "इस ईमेल अधिसूचना को सक्षम करें" डिब्बा। फिर उसे बचाओ और पुनः प्रयास करें।

यदि आपकी त्रुटि दूर हो जाती है, तो उस टेम्पलेट के ओवरराइड के लिए अपनी थीम निर्देशिका देखें। यह <themename>/woocommerce/emails/customer-completed-order.php में होगा। यदि आपके पास कोई है, तो वे इसका नाम बदलते हैं, इसलिए यह अब ओवरराइड नहीं होगा और "पूर्ण आदेश" अधिसूचना को पुनः सक्रिय करेगा और देखें कि डिफ़ॉल्ट टेम्पलेट का उपयोग करने से समस्या ठीक हो जाती है।

यदि समस्या डिफ़ॉल्ट ईमेल अधिसूचना टेम्पलेट के साथ बनी रहती है, तो उन सभी WooCommerce ऐड-ऑन को अक्षम करें जिन्हें आपने इंस्टॉल और रीस्टेट किया हो। इस बिंदु पर, यदि यह काम कर रहा है, तो आप समस्या को वापस आने तक एक-एक करके फिर से सक्षम कर सकते हैं। एक बार जब आप अपमानजनक ऐड-ऑन पा लेते हैं, तो आपको एड-ऑन को किसी समस्या का कारण नहीं होने के लिए या आपके मुद्दे को हल करने के लिए एड-ऑन डेवलपर से संपर्क करने के लिए अपने कोड को समायोजित करने की आवश्यकता होगी।

1

पर यह दुर्लभ मुद्दा है के रूप में, आप बेहतर मैन्युअल रूप से खुला चाहते पड़ा:

/wp-content/plugins/woocommerce/includes/libraries/class-emogrifier.php

और लाइन 299 से पहले, इन पंक्तियों डालें, और देखो क्या आप मिल जाएगा:

var_dump($value); 
var_dump($this->translateCssToXpath($value['selector'])); 
var_dump($xpath->query($this->translateCssToXpath($value['selector']))); 
0

मैं इस अलग हुक की एक श्रृंखला कोशिश कर रहा द्वारा पता लगा, मुद्दा यह था कि हुक मैं ग उपयोग कर रहा था वाउकोमर्स ने शुरूआत से पहले आदेश जारी किया कि इस मुद्दे के कारण क्या हुआ।

संबंधित मुद्दे