2013-02-21 12 views
8

Nie mogę znaleźć opcji podglądu różnych szablonów wiadomości e-mail Woocommerce. W dziale administracyjnym Woocommerce znajduje się link do podglądu wiadomości e-mail "Zamów otrzymane" dla klientów. Ale chciałbym edytować i wyświetlić podgląd e-maila "Zamów otrzymany" wysłanego do administratora.Jak wyświetlić podgląd szablonów wiadomości e-mail z Woocommerce

Próbowałem wtyczki WP Better e-mail i wtyczki szablonów WP, ale nie oferowały przycisku podglądu dla wszystkich różnych e-maili z Woocommerce.

Wyświetlanie szablonów wiadomości e-mail przez składanie zamówień nie jest możliwe, ponieważ między złożeniem zamówienia a odebraniem adresu e-mail administratora upływa dziesięć minut.

Odpowiedz

11

Skończyłem na tworzeniu małej funkcji, która jest wykonywana za pomocą skryptu admin-ajax.php, np.

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

Funkcja:

  • ustawia zmienną globalną $order do rzędu z identyfikatorem określonym w order parametru
  • obciążenia szablonu e-mail podany w parametrze file.

Jest to kod (trzeba je dodać nowy plug-in lub w jakimś istniejącym 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

Nicea rozwiązanie ... mam zmieniony metodę nieco: sprawdza również, jeśli nie jesteś zalogowany jako administrator, dodaje nagłówek i stopkę e-mail (musi być bo aktualizacji woocommerce). 'funkcja previewEmail() { \t jeśli (is_admin()) { \t \t global $ order; \t \t $ sBaseDir = get_template_directory(). '/ Woocommerce/email/"; \t \t $ order = new WC_Order ($ _ GET ['order']); \t \t obejmują $ sBaseDir.'email-header.php '; \t \t obejmują $ sBaseDir. $ _ GET ['plik']; \t \t obejmują $ sBaseDir.'email-footer.php '; \t} \t return null; } ' – Sjeiti

+0

@ David Riccitelli - co masz na myśli przez" jakiś istniejący php? " Nie chcę tworzyć nowej wtyczki tylko po to i nie jestem pewien co masz na myśli, możesz dodać ją do istniejącego PHP. – thecommonthread

+0

@przeczytane można dodać powyższe do dowolnego pliku PHP, który jest ładowany przez WordPress (również plik kompozycji działałby) –

7

Zmodyfikowana wersja powyższej odpowiedzi za pomocą wbudowanego w woo funkcje. Zaletą jest to, że będzie wyglądał zarówno w twoim motywie, jak i domyślnej ścieżce szablonów wtyczek.

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

Przyjemny drrobotnik.Stworzyłem zagadnienie rozwijające się, aby pobrać dostępne wiadomości z obiektu '$ woocommerce-> mailer' i zastosować wbudowaną stylistykę, taką jak WooCommerce do rzeczywistych wychodzących wiadomości e-mail. Zobacz https://gist.github.com/zlove/3b9b6a611715ec3a8a60 – zlovelady

+0

@drrobotnik: Czy to nadal działa w najnowszym WooCommerce (obecnie 2.4.5)? Rezultat nie jest tym, czego się spodziewałem, więc zastanawiam się, czy to po prostu ten skrypt nie działa poprawnie, czy też jest to problem z moimi szablonami. – inspirednz

+0

@inspiredlife. Nie chciałbym polegać na fragmentach kodu bez oczekiwania na małe poprawki. Patrząc na dziennik zmian Woo, uważam, że nastąpiły znaczące zmiany i może już nie działać. Kiedy to opublikowałem, nie było idealnie. Mam nadzieję, że wskazało to niektórych ludzi we właściwym kierunku. – drrobotnik

3

mam wymyślić rozwiązania (wtyczek), które mogą pasować do Twoich potrzeb, mimo że działa tylko z domyślnych szablonów dostępnych w e-mail-to wynika z charakteru jak woocommerce jest zarządzanie e-maile. Github

WordPress Repo

Powiązane problemy