仅为 WooCommerce 中的“customer-on-hold-order”电子邮件通知编辑页眉和页脚
Posted
技术标签:
【中文标题】仅为 WooCommerce 中的“customer-on-hold-order”电子邮件通知编辑页眉和页脚【英文标题】:Edit header and footer only for "customer-on-hold-order" email notifications in WooCommerce 【发布时间】:2021-12-11 04:02:02 【问题描述】:我尝试编辑商店电子邮件的页眉和页脚,但只有直接转到 ALL 电子邮件的模板才能进行编辑。
我还尝试将email-header.php 和email-footer.php 复制到我的孩子主题中,但没有任何反应。
既然模板customer-on-holder-order已经列出了代码
/*
* @hooked WC_Emails::email_header() Output the email header
*/
do_action( 'woocommerce_email_header', $email_heading, $email ); ?>
...
/*
* @hooked WC_Emails::email_footer() Output the email footer
*/
do_action( 'woocommerce_email_footer', $email );
我怎样才能找到/编辑这个?有什么建议吗?
【问题讨论】:
【参考方案1】:woocommerce_email_header
和woocommerce_email_footer
动作钩子出现在多个模板文件中是正确的。
但是,要针对特定电子邮件,您可以使用 $email->id
,因为 $email
作为参数传递给两个钩子
所以你得到:
// Header
function action_woocommerce_email_header( $email_heading, $email )
// Target
if ( $email->id == 'customer_on_hold_order' )
echo 'customer on hold order header';
add_action( 'woocommerce_email_header', 'action_woocommerce_email_header', 10, 2 );
// Footer
function action_woocommerce_email_footer( $email )
// Target
if ( $email->id == 'customer_on_hold_order' )
echo 'customer on hold order footer';
add_action( 'woocommerce_email_footer', 'action_woocommerce_email_footer', 10, 1 );
代码进入活动子主题(或活动主题)的functions.php
文件。在 Wordpress 5.8.1 和 WooCommerce 5.8.0 中测试并运行
【讨论】:
所以,这意味着我需要手动更改所有电子邮件。我不能使用模板来更改所有使用当前页眉和页脚挂钩的电子邮件? @LuísCosta 这取决于您具体想做什么。可以选择使用 if/else 条件覆盖模板文件。另一种选择是通过钩子来做(见我的回答)。以上是关于仅为 WooCommerce 中的“customer-on-hold-order”电子邮件通知编辑页眉和页脚的主要内容,如果未能解决你的问题,请参考以下文章
在Woocommerce中为特定产品类别使用自定义单一产品模板