Yog*_*gie 4 php wordpress orders woocommerce hook-woocommerce
我正在为一个由其他德国开发商建造的woocommerce创建一个主题.我创建了我的子主题并使用子主题的functions.php来更改网站的功能.
当客户订购产品时,他会收到一封电子邮件,其中包含订单表,客户信息和帐单地址以及客户送货.我想删除表格下面的所有内容并添加我自己的文本(客户信息+结算,发货和取货地址).
我在电子邮件中的订单表下方添加了我自己的文本,但是我无法删除默认显示在我自定义添加文本下方的信息.我发现钩子负责获取和显示数据woocommerce_email_order_meta,但我不知道如何删除它或阻止它执行.我不想在模板文件中进行更改,我想通过钩子来完成所有操作.
到目前为止,我尝试过这样做:
remove_action( 'woocommerce_email_order_meta', $order, $sent_to_admin, $plain_text, $email );
Run Code Online (Sandbox Code Playgroud)
我按照链接:从woocommerce中的电子邮件模板删除订单信息部分,并尝试了以下代码,但没有工作.
function so_39251827_remove_order_details( $order, $sent_to_admin, $plain_text, $email ){
$mailer = WC()->mailer(); // get the instance of the WC_Emails class
remove_action( 'woocommerce_email_order_details', array( $mailer, 'order_details' ), 10, 4 );
}
add_action( 'woocommerce_email_order_details', 'so_39251827_remove_order_details', 5, 4 );
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
谢谢
说明 - 在所有电子邮件通知模板中,您都有:
/**
* @hooked WC_Emails::customer_details() Shows customer details
* @hooked WC_Emails::email_address() Shows email address
*/
do_action( 'woocommerce_email_customer_details', $order, $sent_to_admin, $plain_text, $email );
Run Code Online (Sandbox Code Playgroud)
在对WooCommerce核心文件和一些测试进行一些研究之后,我已根据您的意愿成功删除了通知电子邮件中的客户详细信息,账单和送货地址.
这是代码:
function removing_customer_details_in_emails( $order, $sent_to_admin, $plain_text, $email ){
$mailer = WC()->mailer();
remove_action( 'woocommerce_email_customer_details', array( $mailer, 'customer_details' ), 10, 4 );
remove_action( 'woocommerce_email_customer_details', array( $mailer, 'email_addresses' ), 20, 4 );
}
add_action( 'woocommerce_email_customer_details', 'removing_customer_details_in_emails', 5, 4 );
Run Code Online (Sandbox Code Playgroud)
此代码位于活动子主题(或主题)的function.php文件中,或者也可以放在任何插件文件中.
此代码经过测试且功能齐全.
参考文献: