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

WordPress REST API中PUT请求无法修改自定义字段问题排查

WordPress REST API 修改自定义字段失败的问题解决

核心原因

你遇到的问题主要来自三个方面:

  • 自定义字段_company_mobile未注册为REST API可编辑字段,默认仅支持读取操作
  • 单独修改字段时Postman的请求体JSON格式错误,或请求头配置不符合要求
  • 可能存在身份验证缺失或权限不足,导致API拒绝修改操作

具体解决步骤

1. 注册自定义字段为可编辑的REST字段

WP REST API默认仅开放内置字段(如title、content),自定义字段需手动注册才能支持修改。在主题的functions.php中添加以下代码:

add_action('rest_api_init', function () {
    // 针对job-listings自定义文章类型,注册_company_mobile字段
    register_rest_field('job-listings', '_company_mobile', [
        'get_callback' => function ($object) {
            return get_post_meta($object['id'], '_company_mobile', true);
        },
        'update_callback' => function ($value, $object) {
            // 验证用户编辑权限
            if (!current_user_can('edit_post', $object->ID)) {
                return new WP_Error('rest_forbidden', '无修改权限', ['status' => 403]);
            }
            // 更新自定义字段内容
            update_post_meta($object->ID, '_company_mobile', sanitize_text_field($value));
            return true;
        },
        'schema' => [
            'description' => '公司联系电话',
            'type' => 'string',
            'context' => ['view', 'edit']
        ]
    ]);
});

注意代码中的job-listings要和你API路径里的自定义文章类型slug完全一致,添加后刷新站点再测试API请求。

2. 修正Postman的请求配置

单独修改字段时出现rest_invalid_json错误,大概率是请求格式问题:

  • 设置请求头:在Postman的Headers面板添加Content-Type: application/json,确保服务器识别JSON格式的请求体
  • 规范请求体格式:请求体必须符合JSON语法,示例如下:
    {
      "_company_mobile": "13800138000"
    }
    
    注意使用英文双引号,不要遗漏或多写逗号,避免多余的空格或换行干扰解析。

3. 确认身份验证与权限

  • 确保用于API请求的WordPress账号拥有edit_posts权限(至少能编辑目标职位列表)
  • 在Postman中配置身份验证:比如使用Basic Auth(输入账号密码),或JWT Token(若安装了JWT插件),未验证的请求会被API拒绝修改操作

额外排查点

  • 检查自定义字段的key是否拼写正确:比如是否是_company_mobile,有没有漏掉下划线或拼写错误
  • 如果使用了第三方职位列表插件(如WP Job Manager),需查看插件文档确认是否有专属的API字段规则,可能需要额外配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:31:31