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

如何将自定义用户元数据暴露到WooCommerce REST API订单端点

WooCommerce REST API暴露自定义用户元数据到订单端点实现方案

register_meta()完全适用于用户元数据场景,你当前用户端点可以正常返回该字段,就是自定义元数据注册生效的表现。订单端点默认仅返回订单基础关联用户字段,不会自动携带自定义用户元,需要通过WooCommerce提供的REST响应过滤器额外注入字段。
你原有用户注册时自动生成secret_key的逻辑无需调整,和下面的配置完全兼容。

步骤1:正确注册用户元数据(可选,未做元数据注册时补充)

用register_meta统一注册用户元,确保REST接口的读写权限统一配置:

// 注册用户自定义元字段到REST API
add_action( 'init', function() {
    register_meta( 'user', 'secret_key', [
        'type' => 'string',
        'description' => '用户专属密钥',
        'single' => true,
        'show_in_rest' => true, // 用户端点能返回字段的核心配置
        'auth_callback' => function() {
            // 按需配置权限,示例为仅拥有编辑用户权限的账号可操作该字段
            return current_user_can( 'edit_users' );
        }
    ]);
} );

步骤2:注入字段到订单REST API响应

使用woocommerce_rest_prepare_shop_order_object过滤器,在订单接口返回前追加对应下单用户的secret_key字段:

add_filter( 'woocommerce_rest_prepare_shop_order_object', function( $response, $order, $request ) {
    // 可按需调整生效场景,去掉该判断则所有订单接口请求都会返回该字段
    if ( $request->get_param( 'context' ) !== 'view' ) {
        return $response;
    }
    // 获取订单关联的用户ID
    $user_id = $order->get_customer_id();
    if ( $user_id ) {
        // 读取用户元字段
        $secret_key = get_user_meta( $user_id, 'secret_key', true );
        // 追加到响应数据
        $response->data['customer_secret_key'] = $secret_key;
    } else {
        // 游客订单可设为空或者删除该字段
        $response->data['customer_secret_key'] = '';
    }
    return $response;
}, 10, 3 );

配置完成后访问/wp-json/wc/v3/orders/{订单ID}接口,响应中就会包含customer_secret_key字段,值为对应用户的secret_key元数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:15:02