使用register_meta()通过REST API获取文章元数据时字段为空问题
解决register_meta()设置show_in_rest=true后REST响应meta字段为空的问题
我之前在WordPress开发中也踩过这个坑——WordPress Codex里提到了两种给REST响应添加文章元数据的方法,我当时也认准register_meta()是标准正确的实现方式,结果设置了show_in_rest=true之后,响应里的meta字段还是空的,折腾了好一阵才找到问题所在。
后来多亏Allan Fuller的提醒,才搞懂关键问题:register_meta()的第一个参数$object_type必须填post,而不是你实际使用的具体文章类型(比如自定义文章类型的slug、page这类)。很多人容易在这里犯迷糊,把自定义文章类型的名称填进去,导致元数据无法正确暴露到REST API中。
给你贴个正确的用法示例:
register_meta( 'post', // 这里必须写'post',不是你的自定义文章类型标识 'custom_meta_key', array( 'show_in_rest' => true, 'single' => true, 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', 'auth_callback' => function() { return current_user_can('edit_posts'); } ) );
这个细节其实在相关文档的评论区也有提到,只是很容易被忽略。只要把$object_type改成post,再搭配好single、type这些必要参数,元数据就能正常出现在REST响应里了。
内容的提问来源于stack exchange,提问作者Aleksandr Epp
相关产品推荐
相关产品推荐

