在WooCommerce中发送纯文本电子邮件之前,所有HTML标记和一些HTML实体都会被剥离。具体而言,WooCommerce使用wp_strip_all_tags 和preg_replace 使用一组自定义的模式和替换来执行此操作。您可以在中检查代码get_content 在里面includes/emails/class-wc-emails.php.
看来在这个preg_replace 操作,WooCommerce删除HTML实体¥ (¥)因此,您在纯文本电子邮件中看不到货币。注意$plain_replace 包括美元和英镑的实际符号,因此不会删除这些货币。
不幸的是,无论是模式还是替换($plain_search 和$plain_replace) 可以通过过滤器进行扩展,因此您可以选择排除¥ 被替换将是更改插件内部的代码。但是,每当您更新WooCommerce时,这些更改都将被覆盖。
在发送电子邮件之前,将货币符号从电子邮件内容中删除的最可行解决方案是在中覆盖货币符号get_woocommerce_currency_symbols 在里面includes/wc-core-functions.php 使用过滤器woocommerce_currency_symbols.在你的情况下,你会¥ 具有YEN.
但是,该符号也用于商店中显示货币符号的所有位置(例如购物车、收银台、产品页面等)。也就是说,您的网站将在所有这些元素中显示日元而不是日元。
在我看来,对于所有代码不使用特殊符号的货币(如AMD、EGP、CHF等),这是最合理的方法。
在您的具体情况下,如果;字母代码“;应仅在电子邮件中使用,我建议扩展/覆盖WooCommerce电子邮件模板。您应该能够在不覆盖实际电子邮件模板的情况下做到这一点(从而保持向上兼容性和后续更新问题),方法是将挂钩的操作替换为自定义操作(例如woocommerce_email_order_details 在里面customer-on-hold-order.php).