在仅基于 WordPress 电子商务网站制作 B2B 平台的情况下,我需要通过删除订购的商品列表来更改下订单后发送给客户的电子邮件,因为这可能是一个很长的列表)但仍然发送购物车(订单)总计。 我按照@LoicTheAztec 提供的answer 进行操作,效果非常好 这是函数和使用的钩子
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()->get_total()
我尝试阅读 woocommerce 文档,但仍然找不到访问订单总数甚至 $order 变量的方法
购物车是一个前端实时对象,出于多种原因,它从未在电子邮件通知中使用。
如果启用 WP_DEBUG,您将看到您的代码尝试触发错误。
您错过了在函数中添加钩子变量参数来获取订单对象。
尝试以下方法:
add_action( 'woocommerce_init', 'pkdb2b_customize_email_order_details' );
function pkdb2b_customize_email_order_details(){
$mailer = WC()->mailer();
remove_action( 'woocommerce_email_order_details', array($mailer, 'order_details'), 10 );
add_action ( 'woocommerce_email_customer_details', 'custom_email_order_details', 10, 4 );
}
function custom_email_order_details( $order, $sent_to_admin, $plain_text, $email ){
printf('<p>Le montant total de votre commande = <strong>%s DT</strong> est bien reçue</p>',
wc_price( $order->get_total(), array( 'currency' => $order->get_currency() ) ) );
}
应该可以。