You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce后台订单页添加可编辑自定义字段后无法保存如何解决

问题原因

你当前的代码存在两个核心问题导致无法保存和回显数值:

  • 未从订单元数据中读取已存储的custom_km值,代码中的$value变量未定义,自然无法回显历史数据
  • 没有绑定订单保存的动作钩子,提交的字段值不会被写入数据库

完整修正代码

将你原来的代码替换为以下内容,添加到主题的functions.php文件中即可:

// 后台订单页显示自定义公里数字段
add_action( 'woocommerce_admin_order_data_after_order_details', 'editable_order_custom_field', 12, 1 );
function editable_order_custom_field( $order ){
    woocommerce_wp_text_input( array(
        'id'            => 'custom_km',
        'label'         => __("Total Km:", "woocommerce"),
        'value'         => $order->get_meta('custom_km', true), // 从订单元数据读取值实现回显
        'wrapper_class' => 'form-field-wide',
        'type'          => 'number', // 可选配置,限制只能输入数字,更符合公里数字段属性
    ) );
}

// 保存自定义公里数字段值
add_action( 'woocommerce_process_shop_order_meta', 'save_custom_km_field', 12, 2 );
function save_custom_km_field( $order_id, $order ) {
    // 校验用户编辑订单权限
    if ( ! current_user_can( 'edit_shop_order', $order_id ) ) {
        return;
    }
    // 存在提交值则更新订单元数据
    if ( isset( $_POST['custom_km'] ) ) {
        $order->update_meta_data( 'custom_km', sanitize_text_field( $_POST['custom_km'] ) );
        $order->save();
    }
}

效果说明

替换代码后刷新订单编辑页即可正常使用:

  • 历史已录入的公里数会自动回显在输入框中
  • 输入新的公里数后点击「更新」订单,数值会自动存储到数据库
  • 后续业务开发中可以通过$order->get_meta('custom_km', true)方法在任意位置调用该字段的值

内容的提问来源于stack exchange,提问作者InvestiSocial

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:45:07