如何在WooCommerce后台订单编辑页面显示自定义结账字段值
实现自定义结账字段在WooCommerce后台订单页显示
嘿,这事儿好办!你已经添加了自定义结账字段,现在只需要补全保存逻辑+后台渲染代码,就能让用户填写的内容在订单编辑页显示出来。直接把下面的代码加到你的functions.php文件里就行:
1. 补全自定义结账字段的完整代码
先把你之前没写完的字段代码补全,确保格式正确:
// Hook in to add custom checkout field add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); function custom_override_checkout_fields( $fields ) { $fields['billing']['billing_infos'] = array( 'type' => 'textarea', 'label' => __('Podaj NIP', 'woocommerce'), 'placeholder' => _x('Tutaj możesz wpisać NIP', 'placeholder', 'woocommerce'), 'required' => false, 'class' => array('form-row-wide'), // 补全class属性 'clear' => true ); return $fields; // 必须返回修改后的字段数组,否则字段不会生效 }
2. 保存自定义字段的值到订单元数据
光有字段还不够,得把用户填写的内容存到订单里:
// Save custom checkout field value to order meta add_action( 'woocommerce_checkout_update_order_meta', 'save_custom_checkout_field' ); function save_custom_checkout_field( $order_id ) { if ( ! empty( $_POST['billing_infos'] ) ) { // 用sanitize处理内容,避免安全风险 update_post_meta( $order_id, '_billing_infos', sanitize_textarea_field( $_POST['billing_infos'] ) ); } }
3. 在后台订单编辑页渲染字段内容
把保存好的内容显示在账单地址区域下方,和原有信息风格统一:
// Display custom field value in admin order page add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_custom_field_in_admin_order', 10, 1 ); function display_custom_field_in_admin_order( $order ) { $billing_infos = get_post_meta( $order->get_id(), '_billing_infos', true ); if ( ! empty( $billing_infos ) ) { echo '<div class="address"><p><strong>' . __('NIP:', 'woocommerce') . '</strong> ' . esc_html( $billing_infos ) . '</p></div>'; } }
小提示:
- 如果想把字段显示在其他位置,可以替换钩子:比如
woocommerce_admin_order_data_after_shipping_address(配送地址后)、woocommerce_order_details_after_order_table(订单详情表格后); - 代码里的
_billing_infos是存储数据的键,保存和读取时要保持一致; - 用
esc_html()转义内容,避免XSS安全问题。
现在刷新后台的订单编辑页,就能看到用户填写的NIP信息啦!
内容的提问来源于stack exchange,提问作者Daniel Kozina
相关产品推荐
相关产品推荐

