仅为 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_headerwoocommerce_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中为特定产品类别使用自定义单一产品模板

根据在 WooCommerce 中应用的优惠券显示货到付款 (COD)

csharp Custome deserializer

仅为 Xcode 4 中的“存档”构建运行脚本

如何仅为列表中的项目子集提供披露按钮?

如何在 Xamarin 表单中使用 MVVM 仅为集合视图中的选定框架设置颜色?