2013-02-21 22 views
8

Woocommerce'in farklı e-posta şablonlarını önizleme seçeneği bulamıyorum. Woocommerce'in yönetici bölümünde, müşteriler için "Sipariş alındı" e-postasını önizleyen bir bağlantı var. Ancak, yöneticiye gönderilen "Sipariş alındı" e-postasını düzenlemek ve önizlemek istiyorum.Woocommerce e-posta şablonlarının önizlemesi

WP Better e-posta eklentisini ve WP e-posta şablonu eklentilerini denedim ancak Woocommerce'in tüm farklı e-postaları için bir önizleme düğmesi sunmadılar.

Sipariş vermek için e-posta şablonlarını önizleme, siparişi vermekle yönetici e-postasını almak arasında on dakikalık bir gecikme olduğu için bir seçenek değildir.

cevap

11

admin-ajax.php betiği, ör.

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

fonksiyonu:

  • order parametre
  • yükte file parametresinde belirtilen e-posta şablonu belirtilen kimliğe sahip düzene küresel $order değişkeni ayarlar.

Bu kodudur (mevcut bazı php veya ona yeni bir eklenti eklemeniz gerekir):

/** 
* 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

Güzel çözüm ... Ben senin yöntemini değiştirdik biraz: Ayrıca yönetici olarak giriş yaptıysanız, denetler eposta üstbilgi ve altbilgi (a WooCommerce güncellemesi çünkü olmalı) ekler. 'function previewEmail() { \t if (is_admin()) { \t \t global $ sipariş; \t \t $ sBaseDir = get_template_directory(). '/ Woocommerce/emails /'; \t \t $ order = new WC_Order ($ _ GET ['order']); \t \t $ sBaseDir.'email-header.php 'içerir; \t \t $ sBaseDir içerir. $ _ GET ['file']; \t \t $ sBaseDir.'email-footer.php 'içerir; \t dönüş null; } ' – Sjeiti

+0

@David Riccitelli -" varolan bir php "ile ne demek istiyorsun? Sadece bunun için yeni bir eklenti oluşturmak zorunda kalmak istemiyorum ve sadece var olan bir PHP'ye ekleyebileceğiniz anlamına ne olduğundan emin değilim. – thecommonthread

+0

@thecommonthread Yukarıdaki WordPress tarafından yüklenen herhangi bir PHP dosyasına ekleyebilirsiniz (ayrıca bir tema dosyası çalışır) –

7
yukarıdaki cevabın

Modifiye sürümü işlevlerini woo inşa kullanarak. Yarar, hem temanıza hem de varsayılan eklentiler şablon yoluna bakmasıdır. dolayı yalnızca WooCommerce e-postaları nasıl yönettiğine doğası gereği bu varsayılan mevcut e-posta şablonları ile çalışır halde

/** 
* 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

Nice drrobotnik.$ Woocommerce-> mailer 'nesnesindeki mevcut e-postaları almak ve WooCommerce'in gerçek giden e-postalara yaptığı gibi satır içi stil uygulamak için bu konuda genişleyen bir özgeçmiş oluşturdum. Bkz. Https://gist.github.com/zlove/3b9b6a611715ec3a8a60 – zlovelady

+0

@drrobotnik: Bu hala en son WooCommerce'de çalışıyor mu (şu anda 2.4.5)? Sonuç beklediğim gibi değil, bu yüzden bu komut dosyasının artık düzgün çalışıp çalışmadığını veya şablonumda bir sorun olup olmadığını merak ediyorum. – inspirednz

+0

@inspiredlife. Ben küçük bir tweaking beklentisi olmadan kod parçacıklarına güvenmeyeceğim. Woo changelog'a baktığımda, önemli değişiklikler olduğunu düşünüyorum ve artık işe yaramayabilir. Bunu yayınladığımda mükemmel değildi. Umarım bu, bazı insanları doğru yönde işaret eder. – drrobotnik