2013-02-21 13 views
8

के ईमेल टेम्पलेट का पूर्वावलोकन कैसे करें मुझे Woocommerce के विभिन्न ई-मेल टेम्पलेट का पूर्वावलोकन करने का विकल्प नहीं मिल रहा है। Woocommerce के व्यवस्थापक अनुभाग में ग्राहकों के लिए "आदेश प्राप्त" ईमेल का पूर्वावलोकन करने के लिए एक लिंक है। लेकिन मैं व्यवस्थापक को भेजे गए "आदेश प्राप्त" ईमेल को संपादित और पूर्वावलोकन करना चाहता हूं।Woocommerce

मैंने WP बेहतर ईमेल प्लगइन और WP ईमेल टेम्पलेट प्लगइन्स का प्रयास किया है, लेकिन उन्होंने Woocommerce के सभी अलग-अलग ईमेल के लिए पूर्वावलोकन बटन नहीं दिया है।

ऑर्डर देकर ईमेल टेम्पलेट का पूर्वावलोकन करना एक विकल्प नहीं है क्योंकि ऑर्डर देने और व्यवस्थापक ईमेल प्राप्त करने के बीच दस मिनट का अंतराल है।

उत्तर

11

मैंने एक छोटा सा फ़ंक्शन बनाया जो व्यवस्थापक-AJAX.php स्क्रिप्ट के माध्यम से निष्पादित किया गया है, उदा।

https://example.org/wp-admin/admin-ajax.php?action=previewemail&file=emails/customer-processing-order.php&order=180 

समारोह:

  • आईडी order पैरामीटर
  • लोड में निर्दिष्ट file पैरामीटर में निर्दिष्ट ईमेल टेम्पलेट के साथ क्रम में वैश्विक $order चर सेट।

इस कोड है (यदि आप इसे एक नया प्लग में जोड़ना होगा या कुछ मौजूदा php में):

/** 
* Open a preview e-mail. 
* 
* @return null 
*/ 
function preview_email() 
{ 
    global $order; 

    $filename = $_GET['file']; 
    $orderId = $_GET['order']; 

    $order = new WC_Order($orderId); 

    include $filename; 

    return null; 
} 

add_action('wp_ajax_previewemail', 'preview_email');  
+2

अच्छा समाधान ... मैं अपने विधि बदल दिया है एक सा: यदि आप व्यवस्थापक के रूप में प्रवेश किया हो भी की जाँच करता है, ईमेल शीर्ष लेख और पाद (क्योंकि एक Woocommerce अद्यतन होना चाहिए) कहते हैं। 'फ़ंक्शन पूर्वावलोकन ईमेल() { \t यदि (is_admin()) { \t \t वैश्विक $ ऑर्डर; \t \t $ sBaseDir = get_template_directory()। '/ Woocommerce/ईमेल /'; \t \t $ ऑर्डर = नया डब्ल्यूसी_ऑर्डर ($ _ प्राप्त करें ['ऑर्डर']); \t \t $ sBaseDir.'email-header.php 'शामिल है; \t \t $ sBaseDir शामिल हैं। $ _ प्राप्त करें ['file']; \t \t $ sBaseDir.'email-footer.php 'शामिल है; \t} \t वापसी शून्य; } ' – Sjeiti

+0

@ डेविड रिकिसिटेलि -" कुछ मौजूदा PHP "से आपका क्या मतलब है? मैं सिर्फ इसके लिए एक नई प्लगइन नहीं बनाना चाहता हूं और मुझे यकीन नहीं है कि आपका क्या मतलब है कि आप इसे केवल कुछ मौजूदा PHP में जोड़ सकते हैं। – thecommonthread

+0

@thecommonthread आप उपरोक्त किसी भी PHP फ़ाइल में जोड़ सकते हैं जो वर्डप्रेस द्वारा लोड किया गया है (एक थीम फ़ाइल भी काम करेगी) –

7
ऊपर जवाब का

संशोधित संस्करण बनाया का उपयोग कर कार्यों को लुभाने में। लाभ यह है कि यह आपकी थीम और डिफ़ॉल्ट प्लगइन्स टेम्पलेट पथ दोनों में दिखेगा।

/** 
* Open a preview e-mail. 
* 
* @return null 
*/ 
function previewEmail() { 

    if (is_admin()) { 
     $default_path = WC()->plugin_path() . '/templates/'; 

     $files = scandir($default_path . 'emails'); 
     $exclude = array('.', '..', 'email-header.php', 'email-footer.php','plain'); 
     $list = array_diff($files,$exclude); 
     ?><form method="get" action="<?php echo site_url(); ?>/wp-admin/admin-ajax.php"> 
<input type="hidden" name="order" value="2055"> 
<input type="hidden" name="action" value="previewemail"> 
     <select name="file"> 
     <?php 
     foreach($list as $item){ ?> 
      <option value="<?php echo $item; ?>"><?php echo str_replace('.php', '', $item); ?></option> 
     <?php } ?> 
     </select><input type="submit" value="Go"></form><?php 
     global $order; 
     $order = new WC_Order($_GET['order']); 
     wc_get_template('emails/email-header.php', array('order' => $order)); 


     wc_get_template('emails/'.$_GET['file'], array('order' => $order)); 
     wc_get_template('emails/email-footer.php', array('order' => $order)); 

    } 
    return null; 
} 

add_action('wp_ajax_previewemail', 'previewEmail'); 
+2

नाइस ड्रोबोटनिक।मैंने '$ woocommerce-> मेलर' ऑब्जेक्ट से उपलब्ध ईमेल को पकड़ने और इनलाइन स्टाइल को लागू करने के लिए इस पर विस्तार करने के लिए एक गिस्ट बनाया है, जैसे WooCommerce वास्तविक आउटगोइंग ईमेल करता है। Https://gist.github.com/zlove/3b9b6a611715ec3a8a60 – zlovelady

+0

@drrobotnik देखें: क्या यह अभी भी नवीनतम WooCommerce (वर्तमान में 2.4.5) में काम करता है? नतीजा यह नहीं है कि मैं क्या उम्मीद करता हूं, इसलिए मुझे आश्चर्य है कि यह सिर्फ यह है कि यह स्क्रिप्ट सही तरीके से काम नहीं कर रही है, या यह मेरे टेम्पलेट्स के साथ कोई समस्या है या नहीं। – inspirednz

+0

@inspiredlife। मैं थोड़ा tweaking की उम्मीद के बिना कोड स्निपेट पर भरोसा नहीं करता। वू चेंजलॉग को देखते हुए, मुझे लगता है कि महत्वपूर्ण बदलाव हुए हैं और यह अब और काम नहीं कर सकता है। जब मैंने इसे पोस्ट किया, तो यह सही नहीं था। मुझे आशा है कि इसने कुछ लोगों को सही दिशा में इंगित किया है। – drrobotnik

3

मैं एक समाधान (प्लगइन) कि अपनी आवश्यकताओं फिट हो सकता के साथ आते हैं, हालांकि यह केवल डिफ़ॉल्ट उपलब्ध ईमेल टेम्पलेट्स कैसे WooCommerce ईमेल प्रबंध कर रहा है की प्रकृति के कारण यह है के साथ काम करता है। Github

WordPress Repo

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