如何在WooCommerce中将订单备注字段移至订单审核区域上方?
解决WooCommerce订单备注字段移至订单审核区域上方的问题
嘿,很高兴你已经搞定了跳过购物车和重命名订单备注的修改!关于把备注字段移到订单审核区域上方的需求,刚好可以通过你提到的woocommerce_checkout_before_order_review钩子来实现,具体步骤如下:
实现思路
默认的订单备注字段挂载在结账表单底部区域,我们需要先移除默认的备注字段,再通过woocommerce_checkout_before_order_review钩子把自定义的备注字段渲染到订单审核区域上方,同时确保备注内容能正常保存到订单中。
完整代码实现
// 1. 移除默认的订单备注字段 add_filter('woocommerce_checkout_fields', 'remove_default_order_notes'); function remove_default_order_notes($fields) { unset($fields['order']['order_comments']); return $fields; } // 2. 在订单审核区域上方添加自定义订单备注字段 add_action('woocommerce_checkout_before_order_review', 'add_order_notes_before_review'); function add_order_notes_before_review() { $checkout = WC()->checkout(); ?> <div class="woocommerce-additional-fields"> <div class="woocommerce-additional-fields__field-wrapper"> <?php // 替换成你之前重命名的备注标签文本 woocommerce_form_field('order_comments', array( 'type' => 'textarea', 'class' => array('form-row-wide', 'notes'), 'label' => __('你的自定义备注标题', 'woocommerce'), 'placeholder' => __('请输入备注信息...', 'woocommerce'), 'required' => false, // 按需设置是否必填 ), $checkout->get_value('order_comments')); ?> </div> </div> <?php } // 3. 保存订单备注到订单元数据 add_action('woocommerce_checkout_update_order_meta', 'save_order_notes_to_order'); function save_order_notes_to_order($order_id) { if (!empty($_POST['order_comments'])) { update_post_meta($order_id, '_customer_note', sanitize_textarea_field($_POST['order_comments'])); } }
使用说明
- 把代码添加到WordPress主题的
functions.php文件,或者用Code Snippets这类自定义代码插件添加(更推荐后者,避免主题更新丢失代码)。 - 代码里的
__('你的自定义备注标题', 'woocommerce')可以替换成你之前重命名的备注字段名称,保持修改一致性。 - 如果需要设置备注为必填,把
'required' => false改成'required' => true即可。
这样修改后,订单备注字段就会显示在订单审核区域上方,同时保留你之前重命名的效果,也能正常保存用户输入的备注内容~
内容的提问来源于stack exchange,提问作者Gavin Pedley
相关产品推荐
相关产品推荐

