WooCommerce:如何将复选框标签添加至订单邮件?
解决方案
要让免税复选框的标签显示在订单邮件中,需要两步:把用户的选择保存到订单元数据,然后在邮件模板中调用这个数据并显示。以下是完整的修改代码:
//============================================================================= // ADD TAX EXEMPT CHECKMARK // ============================================================================= add_action( 'woocommerce_after_order_notes', 'qd_tax_exempt'); function qd_tax_exempt( $checkout ) { echo '<div id="qd-tax-exempt"><h3>'.__('Tax Exempt').'</h3>'; woocommerce_form_field( 'shipping_method_tax_exempt', array( 'type' => 'checkbox', 'class' => array(), 'label' => __('My organization is tax exempt.'), 'required' => false, ), $checkout->get_value( 'shipping_method_tax_exempt' )); echo '</div>'; } add_action( 'woocommerce_checkout_update_order_review', 'taxexempt_checkout_update_order_review'); function taxexempt_checkout_update_order_review( $post_data ) { global $woocommerce; $woocommerce->customer->set_is_vat_exempt(FALSE); parse_str($post_data); if ( isset($shipping_method_tax_exempt) && $shipping_method_tax_exempt == '1') { $woocommerce->customer->set_is_vat_exempt(true); } } // 新增:保存免税选择到订单元数据 add_action( 'woocommerce_checkout_create_order', 'save_tax_exempt_to_order_meta' ); function save_tax_exempt_to_order_meta( $order ) { if ( isset($_POST['shipping_method_tax_exempt']) && $_POST['shipping_method_tax_exempt'] == '1' ) { $order->update_meta_data( '_tax_exempt_selected', 'yes' ); } } // 新增:在订单邮件中显示免税标签 add_action( 'woocommerce_email_order_details', 'display_tax_exempt_in_email', 20, 4 ); function display_tax_exempt_in_email( $order, $sent_to_admin, $plain_text, $email ) { $tax_exempt = $order->get_meta( '_tax_exempt_selected' ); if ( $tax_exempt == 'yes' ) { if ( $plain_text ) { echo "\n" . __('My organization is tax exempt.') . "\n"; } else { echo '<p><strong>'.__('Tax Exempt Status:').'</strong> '.__('My organization is tax exempt.').'</p>'; } } }
代码说明:
save_tax_exempt_to_order_meta函数:在订单创建时,把用户勾选免税的状态保存为订单元数据,确保邮件能从订单中读取该信息。display_tax_exempt_in_email函数:通过woocommerce_email_order_details钩子,在邮件的订单详情区域插入免税状态显示,同时兼容纯文本和HTML格式的邮件,适配所有邮件类型。
将这段代码添加到你的插件文件中即可,全程通过钩子实现,无需修改主题模板,符合插件开发规范。
内容的提问来源于stack exchange,提问作者DoHu13
相关产品推荐
相关产品推荐

