如何在WooCommerce邮件通知中添加Apaczka插件选择的取件点
解决方案:在WooCommerce订单确认邮件中添加取件柜信息
步骤1:确认取件柜数据的订单元键
插件已将取件柜数据同步到后台订单,这些数据以订单元数据形式存储,你需要先找到对应的元键(存储数据的标识):
- 安装并激活「Code Snippets」插件(WordPress官方插件,安全可靠)
- 新建代码片段,粘贴以下调试代码:
add_action( 'woocommerce_email_order_details', 'show_order_meta_for_parcel_machine', 10, 4 ); function show_order_meta_for_parcel_machine( $order, $sent_to_admin, $plain_text, $email ) { // 仅管理员可见调试信息 if ( current_user_can( 'manage_woocommerce' ) ) { echo '<h3>订单元数据调试</h3>'; $all_meta = get_post_meta( $order->get_id() ); echo '<ul>'; foreach ( $all_meta as $key => $value ) { echo '<li><strong>' . esc_html( $key ) . ':</strong> ' . esc_html( $value[0] ) . '</li>'; } echo '</ul>'; } }
- 保存并激活片段,触发测试订单或查看已有订单的管理员确认邮件
- 在邮件中找到包含取件柜名称/地址/编号的元键(如
_apaczka_selected_locker、_parcel_machine_details这类标识),记下该元键。
步骤2:添加取件柜信息到订单邮件
新建代码片段,替换调试代码,使用以下正式代码(将YOUR_META_KEY_HERE替换为步骤1找到的元键):
add_action( 'woocommerce_email_order_details', 'add_parcel_machine_info_to_emails', 20, 4 ); function add_parcel_machine_info_to_emails( $order, $sent_to_admin, $plain_text, $email ) { // 获取取件柜数据 $parcel_data = get_post_meta( $order->get_id(), 'YOUR_META_KEY_HERE', true ); if ( ! empty( $parcel_data ) ) { // 适配HTML邮件格式 if ( ! $plain_text ) { echo '<h2 style="margin: 16px 0; font-size: 18px;">取件柜信息</h2>'; echo '<ul style="list-style: none; padding: 0; margin: 0;">'; // 以下为常见字段示例,可根据实际数据结构调整 if ( isset( $parcel_data['name'] ) ) { echo '<li style="margin: 8px 0;"><strong>取件柜名称:</strong> ' . esc_html( $parcel_data['name'] ) . '</li>'; } if ( isset( $parcel_data['address'] ) ) { echo '<li style="margin: 8px 0;"><strong>地址:</strong> ' . esc_html( $parcel_data['address'] ) . '</li>'; } if ( isset( $parcel_data['code'] ) ) { echo '<li style="margin: 8px 0;"><strong>取件柜编号:</strong> ' . esc_html( $parcel_data['code'] ) . '</li>'; } echo '</ul>'; } // 适配纯文本邮件格式 else { echo "\n=== 取件柜信息 ===\n"; if ( isset( $parcel_data['name'] ) ) echo "取件柜名称: " . esc_html( $parcel_data['name'] ) . "\n"; if ( isset( $parcel_data['address'] ) ) echo "地址: " . esc_html( $parcel_data['address'] ) . "\n"; if ( isset( $parcel_data['code'] ) ) echo "取件柜编号: " . esc_html( $parcel_data['code'] ) . "\n"; } } }
- 保存并激活片段,测试订单邮件即可看到取件柜信息已显示。
注意事项
- 若不想用Code Snippets插件,可将代码添加到子主题的
functions.php文件末尾,但子主题更新不会丢失代码,主主题更新会覆盖,优先推荐插件方式。 - 若调试时找不到元键,可右键后台订单详情页的取件柜信息区域→「检查」,查看元素属性,插件通常会将数据关联到
data-meta-key类的属性中,或直接从元数据列表里找包含取件柜内容的键。
内容的提问来源于stack exchange,提问作者mwlandof
相关产品推荐
相关产品推荐

