WooCommerce 文档

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;
} );

最佳实践

在与电子邮件预览集成时:

  1. 使用合适的对象类型
  2. 为您的扩展使用正确的对象类型(例如,对于 WooCommerce 订阅,使用 WC_Subscription 而不是 WC_Order)。
  3. 确保所有必需的属性都已设置在虚拟对象上。

  4. 处理占位符

  5. 添加您的扩展使用的所有自定义占位符。
  6. 为占位符提供真实的预览值。

  7. 样式和内容设置

  8. 注册所有影响电子邮件外观或内容的所有自定义设置。

  9. 测试

  10. 使用不同的电子邮件类型进行预览测试。
  11. 验证所有自定义内容是否正确显示。
  12. 检查响应式设计。

故障排除

常见问题和解决方案:

  1. 我看到 "There was an error rendering an email preview." 错误
  2. 您的代码中存在 PHP 错误,导致电子邮件预览失败。请检查您的错误日志以获取更多详细信息。
  3. 或者,您可以修改 class-wc-admin.php 并删除 try/catch block 围绕渲染电子邮件预览,以查看错误消息。

  4. 样式或内容设置的更改未反映

  5. 确保样式设置已通过 woocommerce_email_preview_email_style_setting_ids 过滤器注册。
  6. 确保内容设置已通过 woocommerce_email_preview_email_content_setting_ids 过滤器注册。

  7. 我没有看到我的扩展的电子邮件

  8. 确保电子邮件已通过 woocommerce_email_classes 过滤器注册。