WordPress 修改 RESTful API 的请求和响应
像素鱼丸
11-22
173
0

有两种方法可用于将数据添加到 WordPress REST API 的响应:

  • register_rest_field 可用于向任何 RESTful API 响应添加任意字段,并可用于使用API读取和写入数据。要注册新的 RESTful API 字段,您必须提供自己的回调函数来获取或设置字段的值,并手动为字段指定自己的模式定义。
  • register_meta 用于将现有的自定义元值列入白名单,以便通过REST API进行访问。通过将元字段的show_in_rest参数设置为true,该字段的值将在端点响应中的.meta键上公开,WordPress 将处理设置回调以读取和写入该元键。这比register_rest_field 简单一些。

详细文档:https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/

register_rest_field

add_action('rest_api_init', function () {
    // ‘post’ 文章类型,也可以是其他文章类型,‘my-my_post_meta’ 是前端提交过来的数据
    register_rest_field('post', 'my_post_meta', array(
        // 把自定义字段数据附加到 Rest API 文章接口返回的 Json 数据里
        'get_callback' => function ($object) {
            $my_post_meta = get_post_meta($object['id'], 'my_post_meta', true);
            return $my_post_meta;
        },
        // 保存数据的回调,获取前端提交过来的数据,然后保存
        'update_callback' => function ($value, $post_object) {
            $post_id = $post_object->ID;
            add_post_meta($post_Id, 'my_post_meta', $value, true) or
                    update_post_meta($post_id, 'my_post_meta', $value);
            return true;
        }
    ));
});

register_meta

register_meta(
  'post',
  'oss_url',
  array(
    'single' => true,
    'type' => 'string',
    'show_in_rest' => true
  )
);

请求数据的格式

###
POST https://dev.rangtuo.com/wp-json/wp/v2/audios/162
content-type: application/json; charset=utf-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2OTkwMzAyNDQsImV4cCI6MTY5OTA5MDI0NCwibmJmIjoxNjk5MDMwMjQ0LCJ1c2VyX2lkIjoiMSJ9.uesgf5_cYKGXOyGmEOghsj8TiTX2Kh-npJhdR2R0rbI

{
    "title":"一个测试用的5",
    "content":"这是内容",
    "my_post_meta":"这里是自定义字段的值"
}
收藏
打赏
WordPress RESTful API 路由代码结构
上一篇
WordPress WP_Query() 教程
下一篇

发表评论

注册不是必须的

像素鱼丸
152 文章
0 评论
4 喜欢
最新文章

网站的 Cookie 弹窗

在当前的法规环境下(截至2026年4月),一个合规的Cookie弹窗设计必须遵循“透明、公平、明确”的原则,核心是确保用户拥有真正的选择权。 以下是现阶段设计合规Cookie弹窗的关键要点: 现阶段合规设计要点 禁止默认同意 弹窗出现时,所有非必要Cookie的选项都不能被预先勾选。用户必须通过一个明确的、主动的动作(如点击按钮或勾选方框)来表示同意。 提供平等的选择权 “拒绝”按钮必须在视觉上和 […]

网页设计中 banner、jumbotron、hero 都有什么区别

在网页设计和开发中,banner、jumbotron、hero 这些词通常指代页面顶部最引人注目的区域,但它们在具体含义和使用场景上有所区别。 🎯 核心概念辨析 Banner (横幅/条幅广告) 这是一个非常广泛的术语,通常指网页上任何矩形的广告或信息区域,可以出现在页面的顶部、侧边或底部。它更偏向于广告或信息展示的功能。 Jumbotron (巨幕) 这个词源于 Bootstrap 等前端框架, […]

宝塔 Nginx 拦截了 WordPress 返回 404 的状态

REST api 接口中,有段代码返回404,但是没有正常返回错误json: $wp_response = new \WP_REST_Response(array('error'=>'没有找到数据')); $wp_response->set_status(404); return $wp_response; 返回内容是: <html> <head><tit […]

Mirage 主题 v2.93.0 发布

更新内容: refactor 移除图片高宽比开关 refactor 移除全局的TOC生成开关 refactor 优化 header.php 中的seo模块和样式覆盖 feat 主题启用的时候,移除非当前主题注册的小工具 fix 修复分类小工具的bug feat 管理员打开后台,检查最当前设置首页布局的模块,如果缺少最新模块,就添加到隐藏模块列表中 fix 优化链接卡片样式 fix 优化热门文章样式 […]
生成中...
扫描二维码
扫描二维码
用户登录