title: "电子邮件预览集成" post_status: publish comment_status: open taxonomy: category: - woocommerce post_tag: - Email - Features - Repos
电子邮件预览集成
概述
WooCommerce 的电子邮件预览功能允许您使用虚拟数据预览电子邮件模板(即,它不使用数据库中的实际数据)。这意味着注册新电子邮件类型的扩展需要与电子邮件预览系统集成,以便正确展示其电子邮件。
集成钩子
以下钩子允许扩展完全控制电子邮件预览:
样式和内容设置
这些钩子允许扩展添加新的样式和内容设置,电子邮件预览会监听这些设置的变化,并在发生变化时更新预览。
woocommerce_email_preview_email_style_setting_ids
添加新的电子邮件样式设置,电子邮件预览会监听这些设置的变化。
add_filter( 'woocommerce_email_preview_email_style_setting_ids', function( $setting_ids ) {
$setting_ids[] = 'my_extension_email_style';
return $setting_ids;
} );
woocommerce_email_preview_email_content_setting_ids
添加新的电子邮件内容设置,电子邮件预览会监听这些设置的变化。
add_filter( 'woocommerce_email_preview_email_content_setting_ids', function( $setting_ids ) {
$setting_ids[] = 'my_extension_email_content';
return $setting_ids;
} );
虚拟数据修改
woocommerce_email_preview_dummy_order
修改在预览中使用的虚拟 WC_Order 对象。
add_filter( 'woocommerce_email_preview_dummy_order', function( $order ) {
// 修改虚拟订单对象
$order->set_currency( 'EUR' );
return $order;
} );
woocommerce_email_preview_dummy_product
修改在预览中使用的虚拟产品。
add_filter( 'woocommerce_email_preview_dummy_product', function( $product ) {
// 修改虚拟产品对象
$product->set_name( 'My Product' );
return $product;
} );
woocommerce_email_preview_dummy_product_variation
修改在预览中使用的虚拟产品变体。
add_filter( 'woocommerce_email_preview_dummy_product_variation', function( $variation ) {
// 修改虚拟变体对象
$variation->set_name( 'My Variation' );
return $variation;
} );
woocommerce_email_preview_dummy_address
修改在预览中使用的虚拟地址。
add_filter( 'woocommerce_email_preview_dummy_address', function( $address ) {
// 修改虚拟地址数组
$address['first_name'] = 'Preview';
$address['last_name'] = 'Customer';
return $address;
} );
占位符和电子邮件对象
woocommerce_email_preview_placeholders
修改要替换到电子邮件中的占位符。
add_filter( 'woocommerce_email_preview_placeholders', function( $placeholders ) {
// 添加自定义占位符
$placeholders['{custom_placeholder}'] = 'Custom Value';
return $placeholders;
} );
woocommerce_prepare_email_for_preview
修改用于预览的 WC_Email 对象。
add_filter( 'woocommerce_prepare_email_for_preview', function( $email ) {
// 修改 email 对象,例如替换 WC_Order
$email->set_object( $custom_object );
return $email;
} );
最佳实践
在与电子邮件预览集成时:
- 使用合适的对象类型
- 为您的扩展使用正确的对象类型(例如,对于 WooCommerce 订阅,使用
WC_Subscription而不是WC_Order)。 -
确保所有必需的属性都已设置在虚拟对象上。
-
处理占位符
- 添加您的扩展使用的所有自定义占位符。
-
为占位符提供真实的预览值。
-
样式和内容设置
-
注册所有影响电子邮件外观或内容的所有自定义设置。
-
测试
- 使用不同的电子邮件类型进行预览测试。
- 验证所有自定义内容是否正确显示。
- 检查响应式设计。
故障排除
常见问题和解决方案:
- 我看到 "There was an error rendering an email preview." 错误
- 您的代码中存在 PHP 错误,导致电子邮件预览失败。请检查您的错误日志以获取更多详细信息。
-
或者,您可以修改
class-wc-admin.php并删除try/catchblock 围绕渲染电子邮件预览,以查看错误消息。 -
样式或内容设置的更改未反映
- 确保样式设置已通过
woocommerce_email_preview_email_style_setting_ids过滤器注册。 -
确保内容设置已通过
woocommerce_email_preview_email_content_setting_ids过滤器注册。 -
我没有看到我的扩展的电子邮件
- 确保电子邮件已通过
woocommerce_email_classes过滤器注册。