在仅基于 wordpress 电子商务网站制作 B2B 平台的背景下,我需要更改下订单后发送给客户的电子邮件,删除订购的商品列表(因为这可能是一个很长的列表),但仍发送购物车(订单)总额。我遵循了@LoicTheAztec 提供的答案,它完美地工作了,这里是函数和使用的钩子
function pkdb2b_remove_order_details_from_emails(){
$mailer = WC()->mailer();
remove_action('woocommerce_email_order_details', array($mailer, 'order_details'), 10);
}
add_action('woocommerce_email_order_details','pkdb2b_remove_order_details_from_emails', 5, 4);
这将删除订单详细信息。为了添加购物车总额,我使用了另一个函数和钩子,如下所示。
function pkdb2b_add_cart_total_email(){
;
$cart_total = WC()->cart->cart_contents_total;
echo "<p> Votre Commande montant Total = "."<strong>".$cart_total." DT"."</strong> est bien reçue</p>";
}
add_action('woocommerce_email_order_details','pkdb2b_add_cart_total_email', 5, 4);
订单确认后此功能也有效。但是,订单取消后,收到的电子邮件中不再显示购物车总额(这是意料之中的,因为我们不再有购物车)。
我曾尝试使用这个 $order = WC_Emails()->order_details(); $total = $order-> get_total(); 或者这个
$总计 = WC_Order()->获取总计()
我尝试阅读woocommerce 文档,但仍然找不到访问订单总额甚至 $order 变量的方法
购物车是一个前端活动对象,由于多种原因,它从未在电子邮件通知中使用。
如果启用WP_DEBUG,您将看到您的代码尝试触发错误。
您忘记在函数中添加钩子变量参数来获取订单对象了。
请尝试以下操作:
它应该可以工作。