如何在WooCommerce邮件主题加商品名?现有代码致结账报错求修复
修复后的WooCommerce邮件主题自定义代码
原代码报错原因有两个:
- 错误调用了订单属性的方法形式(比如
$order->billing_first_name()),WooCommerce订单的账单信息需要用官方提供的getter方法(如get_billing_first_name()) - 未判断
$email->object是否为WC_Order实例,结账流程中该钩子可能被触发但当前对象不是订单,导致调用订单方法时报错
以下是修复后的代码:
add_filter( 'woocommerce_email_format_string', 'add_custom_email_format_string', 10, 2 ); function add_custom_email_format_string( $string, $email ) { // 仅当当前对象是WC_Order实例时执行后续逻辑 if ( ! is_a( $email->object, 'WC_Order' ) ) { return $string; } $order = $email->object; $products_names = array(); // 遍历订单商品,获取商品名称 foreach( $order->get_items() as $item ) { if ( is_a( $item, 'WC_Order_Item_Product' ) ) { $products_names[] = $item->get_name(); } } // 替换自定义占位符 $string = str_replace( '{biller_fname}', $order->get_billing_first_name(), $string ); $string = str_replace( '{biller_lname}', $order->get_billing_last_name(), $string ); $string = str_replace( '{biller_email}', $order->get_billing_email(), $string ); $string = str_replace( '{product_name}', implode( ', ', $products_names ), $string ); $string = str_replace( '{blog_name}', get_bloginfo( 'name' ), $string ); return $string; }
可用的邮件主题标签
{product_name}:订单中所有商品名称(多个商品用逗号分隔){biller_fname}:客户账单名{biller_lname}:客户账单姓氏{biller_email}:客户账单邮箱{blog_name}:你的网站名称
内容的提问来源于stack exchange,提问作者Dhinesh
相关产品推荐
相关产品推荐

