我似乎无法找到预览Woocommerce的不同电子邮件模板的选项。在Woocommerce的管理部分,有一个链接可以为客户预览“订单收到”电子邮件。但我想编辑和预览发送给管理员的“订单收到”电子邮件。
我已尝试过WP Better电子邮件插件和WP电子邮件模板插件,但他们没有为Woocommerce的所有不同电子邮件提供预览按钮。
通过下订单预览电子邮件模板不是一种选择,因为在下订单和收到管理员电子邮件之间会有十分钟的延迟。
答案 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
参数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