如何预览Woocommerce的电子邮件模板

时间:2013-02-21 16:05:18

标签: wordpress email templates preview woocommerce

我似乎无法找到预览Woocommerce的不同电子邮件模板的选项。在Woocommerce的管理部分,有一个链接可以为客户预览“订单收到”电子邮件。但我想编辑和预览发送给管理员的“订单收到”电子邮件。

我已尝试过WP Better电子邮件插件和WP电子邮件模板插件,但他们没有为Woocommerce的所有不同电子邮件提供预览按钮。

通过下订单预览电子邮件模板不是一种选择,因为在下订单和收到管理员电子邮件之间会有十分钟的延迟。

3 个答案:

答案 0 :(得分:11)

我最终创建了一个通过admin-ajax.php脚本执行的小函数,例如

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

功能:

  • 将全局$order变量设置为order参数
  • 中指定的ID的顺序
  • 加载file参数中指定的电子邮件模板。

这是代码(你必须添加一个新的插件或在一些现有的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');    

答案 1 :(得分:8)

使用内置的woo函数修改上述答案的版本。好处是它将同时查看您的主题和默认插件模板路径。

/**
 * 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 :(得分:4)

我已经提出了一个可以满足您需求的解决方案(插件),虽然它只适用于默认的可用电子邮件模板,这是由于WooCommerce管理电子邮件的方式。 Github

WordPress Repo