WooCommerce में एक पूर्ण आदेश के लिए दूसरा ईमेल पता जोड़ना [बंद]


11

इससे पहले कि मैं यह सवाल पूछूं, मुझे पता है कि वू उत्पादों के बारे में सवालों के जवाब देने में (वैध) झिझक है क्योंकि उनके पास अपना समर्थन है और उनके उपयोगकर्ताओं को इसका उपयोग करने के लिए प्रोत्साहित किया जाना चाहिए। मैं एक भुगतान करने वाला वू उपयोगकर्ता हूं, लेकिन अपने भुगतान समर्थन के साथ इसे हल नहीं कर सका, और मेरा प्रश्न WP में कक्षाओं को ओवरराइड करने के बारे में है, इसलिए मुझे उम्मीद है कि इसे एक उचित सुनवाई मिलेगी।

मेरा प्रश्न: जब एक पूर्ण ऑर्डर ईमेल एक ग्राहक को भेजा जाता है, तो मुझे यह ईमेल, शब्दशः और स्वचालित रूप से प्राप्त करने की आवश्यकता होती है, ठीक उसी तरह जैसे इसे ग्राहक को किसी अन्य प्रारूप में भेजा जाता है जैसे कि विभिन्न चालान पीडीएफ द्वारा बनाया जाता है। WooCommerce के लिए प्लगइन्स। मैं निम्नलिखित पंक्ति को बदलकर इसे बहुत आसानी से पूरा कर सकता हूं /woocommerce/classes/emails/class-wc-email-customer-completed-order.php:

$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );

पढ़ने के लिए:

$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
$this->send( me@myemail.com, $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );

हालांकि, जाहिर है कि इस तरह एक हैक एक उन्नयन जीवित नहीं है। मेरे पास एक बच्चा विषय है जो WooCommerce टेम्पलेट्स को ओवरराइड करता है। क्या कोई ऐसा समतुल्य तंत्र है जिसके द्वारा मैं किसी वर्ग को समान रूप से अतिक्रमित तरीके से ओवरराइड कर सकता हूं? या क्या आप इस ईमेल को प्राप्त करने के मेरे विशिष्ट कार्य को पूरा करने के लिए एक वैकल्पिक दृष्टिकोण (एसएमटीपी सर्वर को सेट करने के अलावा सभी आउटगोइंग ईमेल को दूसरे पते पर भेज सकते हैं) जब ग्राहक भी इसे प्राप्त करता है?


मैंने पहले smtp सर्वर के रूप में gmail / google का उपयोग किया है, और यह वास्तव में भेजे गए फ़ोल्डर में ईमेल डालता है ... (आपके मामले में इसके लायक क्या है)
Ewout

जवाबों:


22

वास्तव में एक फ़िल्टर है जिसे आप उपयोग कर सकते हैं, देख सकते हैं abstract-wc-email.php, लाइन 214:

return apply_filters( 'woocommerce_email_recipient_' . $this->id, $this->recipient, $this->object );

आप अपने कार्यों में निम्नलिखित डाल सकते हैं।

add_filter( 'woocommerce_email_recipient_customer_completed_order', 'your_email_recipient_filter_function', 10, 2);

function your_email_recipient_filter_function($recipient, $object) {
    $recipient = $recipient . ', me@myemail.com';
    return $recipient;
}

एकमात्र दोष यह है कि प्राप्तकर्ता आपके पते और अपने स्वयं के दोनों को To: फ़ील्ड में देखेगा।


वैकल्पिक रूप से, स्टीव के जवाब पर निर्माण, आप woocommerce_email_headersफ़िल्टर का उपयोग कर सकते हैं । पारित किए गए $ ऑब्जेक्ट आपको केवल पूर्ण आदेश ईमेल पर इसे लागू करने की अनुमति देता है:

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2);

function mycustom_headers_filter_function( $headers, $object ) {
    if ($object == 'customer_completed_order') {
        $headers .= 'BCC: My name <my@email.com>' . "\r\n";
    }

    return $headers;
}

यह बहुत ही आशाजनक लग रहा है। क्या आपका सुझाव इस कार्यक्षमता के लिए एक प्लगइन बनाने का है?
हाले

जवाब अपडेट करें!
Ewout

यह पूरी तरह से काम करता है , बहुत-बहुत धन्यवाद। यह वास्तव में ऊपर और परे चला गया।
हाले

नीचे दिए गए कोड "वैकल्पिक रूप से, स्टीव के उत्तर पर निर्माण ..." WC 2.3 के साथ काम करने के लिए प्रतीत नहीं होता ... कोई सुझाव?
ड्रेक ०३५

कोई भी कोड WC 2.5.5 पर काम नहीं कर रहा है, क्या आपको पता है कि क्या उन्होंने फ़िल्टर का नाम बदल दिया है? धन्यवाद!
जेपी

9

और एक और फ़िल्टर है जो आपको $ शीर्ष लेख चर तक पहुंच प्रदान करेगा जो आपको अपने ईमेलों को BCC करने की अनुमति दे सकता है ताकि आपको हर उस ईमेल की कार्बन कॉपी मिल जाए जो आपके ग्राहकों को Woocommerce पर जाती है। यह उतना ही आसान है जितना कि ऊपर दिए गए कोड के अलावा आपके क्लाइंट आपके ईमेल पते को नहीं देखेंगे।

ऊपर दिए गए समाधान की तरह आप निम्नलिखित कोड जोड़ेंगे:

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2);

function mycustom_headers_filter_function($headers, $object) {
    $headers = array();
    $headers[] = 'Bcc: your name <me@myemail.com>';
    $headers[] = 'Content-Type: text/html';
    return $headers;
}

यह फ़िल्टर सभी $ हेडर पर लागू होता है और टेक्स्ट / html जैसे हार्ड कोड भी। ध्यान दें कि आप सामग्री प्रकार की घोषणा में '/ r / n' को शामिल नहीं करते हैं - इससे wp_mail () में त्रुटि हो सकती है - जो कि वोकॉमर्स आपके संदेशों को भेजने के लिए उपयोग करता है।

मैं इस कोड का उपयोग कर रहा हूं ताकि मैं सत्यापित कर सकूं कि Woocommerce v2.0.14। पहले के संस्करणों में भी काम करना चाहिए लेकिन यह सुनिश्चित नहीं करना चाहिए कि फ़िल्टर को कब तक शामिल किया गया है।


/ R / n का उपयोग क्यों नहीं करते? मुझे लगता है कि हेडर की सरणी में / r / n जोड़ने पर ही त्रुटि सामने आती है। आपका उदाहरण वास्तव में सामग्री सेटिंग को अधिलेखित करता है, जिसे आप पुन: उपयोग कर सकते हैं।
Ewout

2
मैंने एसओ पर उत्तर दिया है कि केवल विशिष्ट ईमेल में बीसीसी को जोड़ने और मौजूदा हेडर को बनाए रखने के लिए एक विधि है।
हेलगेटहाइकिंग 10
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.