如何通过REST API获取并更新WordPress媒体的wooThumbs自定义元数据?
解决wooThumbs视频链接无法通过WP REST API获取/更新的问题
默认情况下,WordPress REST API不会自动暴露插件添加的自定义字段(比如wooThumbs的_iconic_woothumbs_media),也不允许直接通过API更新,需要手动添加代码开启该字段的REST支持。
步骤1:添加代码开启REST支持
将以下代码添加到主题的functions.php文件,或者自定义插件中:
// 注册wooThumbs视频链接字段到媒体REST API add_action('rest_api_init', function() { register_rest_field('attachment', '_iconic_woothumbs_media', array( // 处理字段的获取逻辑 'get_callback' => function($post_data) { return get_post_meta($post_data['id'], '_iconic_woothumbs_media', true); }, // 处理字段的更新逻辑 'update_callback' => function($video_url, $post_object) { // 验证用户权限 if (!current_user_can('edit_post', $post_object->ID)) { return new WP_Error('rest_forbidden', '无权限编辑该媒体', array('status' => 403)); } // 存储清洗后的视频链接 update_post_meta($post_object->ID, '_iconic_woothumbs_media', sanitize_text_field($video_url)); return true; }, // 定义字段的Schema信息 'schema' => array( 'description' => 'wooThumbs关联的视频链接', 'type' => 'string', ), )); });
步骤2:验证效果
- 获取字段:发送GET请求
https://<site>/wp-json/wp/v2/media/281668,响应中会新增_iconic_woothumbs_media字段,返回对应的视频链接。 - 更新字段:发送POST/PUT请求
https://<site>/wp-json/wp/v2/media/281668,请求体携带如下数据即可成功更新:
{ "_iconic_woothumbs_media": "https://your-video-url.com" }
原理说明
wooThumbs插件将视频链接存储为媒体附件的自定义元数据_iconic_woothumbs_media,但WordPress REST API默认只暴露核心字段(标题、替代文本等)。通过register_rest_field函数,我们可以将这个自定义字段注册到REST API中,同时定义获取和更新的逻辑,确保API能正确处理该字段的读写操作。
内容的提问来源于stack exchange,提问作者Richard Shuck
相关产品推荐
相关产品推荐

