WooCommerce需求:无论配送方式,订单邮件需显示配送信息及订单备注
解决WooCommerce订单邮件始终显示配送地址与订单备注的问题
替换你之前用于显示配送地址的代码,以下代码可实现无论选择何种配送方式,订单邮件中同时显示配送信息和客户订单备注:
// 强制在所有订单邮件中显示配送地址 add_action( 'woocommerce_email_customer_details', 'force_display_shipping_address_in_emails', 20, 4 ); function force_display_shipping_address_in_emails( $order, $sent_to_admin, $plain_text, $email ) { // 仅在客户邮件中执行,如需管理员邮件也显示可删除此行 if ( $sent_to_admin ) return; // 检查订单是否存在配送地址,避免空内容显示 if ( $order->has_shipping_address() ) { echo '<h2>' . __( 'Shipping Address', 'woocommerce' ) . '</h2>'; $shipping_address = $order->get_formatted_shipping_address(); if ( $plain_text ) { echo wp_kses_post( $shipping_address ) . "\n\n"; } else { echo wp_kses_post( $shipping_address ) . '<br><br>'; } } } // 强制在所有订单邮件中显示客户订单备注 add_action( 'woocommerce_email_after_order_table', 'force_display_order_notes_in_emails', 10, 4 ); function force_display_order_notes_in_emails( $order, $sent_to_admin, $plain_text, $email ) { $customer_note = $order->get_customer_note(); if ( ! empty( $customer_note ) ) { if ( $plain_text ) { echo "\n" . __( 'Customer Note:', 'woocommerce' ) . "\n" . wp_kses_post( $customer_note ) . "\n\n"; } else { echo '<h3>' . __( 'Customer Note', 'woocommerce' ) . '</h3>'; echo '<p>' . wp_kses_post( $customer_note ) . '</p><br>'; } } }
代码说明
- 配送地址模块:绕过WooCommerce默认的配送方式判断逻辑,只要订单存在配送地址就强制显示。若需要管理员接收的邮件也显示配送地址,删除
if ( $sent_to_admin ) return;即可。 - 订单备注模块:自动检测订单是否有客户填写的备注,若有则在订单表格后显示,兼容纯文本和HTML两种邮件格式。
使用方法
- 删除你之前添加的仅显示配送地址的旧代码
- 将上述代码添加到WordPress主题的
functions.php文件末尾,或通过Code Snippets等自定义代码插件添加 - 测试自提、普通配送等不同下单流程,验证邮件内容是否符合需求
内容的提问来源于stack exchange,提问作者ETAF
相关产品推荐
相关产品推荐

