WordPress Codex建议了两种将post meta添加到响应中的方法。我正在尝试使用register_meta()来实现这一点,因为它对我来说似乎是正确的方法。
问题:
当我使用register_meta()时,响应中的meta字段保持为空,尽管show_in_rest设置为true。
溶液:
感谢Allan Fuller,他指出,$object_type参数(register_meta()函数中的第一个应该是post而不是post类型。这在新代码参考的注释部分也提到了
求解前的描述
我是如何做到这一点的:
步骤 1:从函数调用.php:
\add_action('init', [$this, 'init'], 10);
步骤2:在init函数中注册自定义帖子类型:
\register_post_type(
CompanyPostType::POST_TYPE_NAME,
[
'labels' => [
'name' => __('Companies'),
'singular_name' => __('Company')
],
'public' => true,
'show_in_rest' => true,
'rest_base' => CompanyPostType::REST_BASE,
'has_archive' => false,
'rewrite' => false,
'supports' => [
'custom-fields',
'revisions'
]
]
);
步骤3 -利润:在init函数中注册自定义文章类型的meta
$meta = [
'key' => CompanyPostType::META_NAME,
'description' => 'Name of the company',
'type' => 'string'
],
\register_meta(CompanyPostType::POST_TYPE_NAME, $meta['key'],
[
'show_in_rest' => true,
'single' => true,
'type' => $meta['type'],
'description' => $meta['description'],
]
);
元字段在响应中仍然保持为空。但是,如果我在同一个init钩子中使用codex中建议的第二种方法(register_rest_field()):
\add_action( 'rest_api_init', function () {
\register_rest_field( CompanyPostType::POST_TYPE_NAME, CompanyPostType::META_NAME, array(
'get_callback' => function($params ) {
$meta = \get_post_meta( $params['id'], CompanyPostType::META_NAME, true);
return (string) $meta;
},
) );
} );
然后字段及其值出现在响应中。我错过了什么?
由于我使用的是自定义帖子类型,因此可能也值得查看这部分代码。如法典中所述,在注册时,我将“支持”设置为=
return \register_post_type(
self::POST_TYPE_NAME,
[
'labels' => [
'name' => __('Companies'),
'singular_name' => __('Company')
],
'public' => true,
'show_in_rest' => true,
'rest_base' => self::REST_BASE,
'has_archive' => false,
'rewrite' => false,
'supports' => [
'title',
'custom-fields',
'revisions'
]
]
);
编辑:
正如 Allan Fuller 在他的博客文章中建议的那样,我试图将 \register_meta() 放在rest_api_init钩子中,但它对响应中的 meta 没有影响。
如果您想使用<code>register_meta
示例<>
add_action( 'rest_api_init', 'register_posts_meta_field' );
function register_posts_meta_field() {
register_meta('post', $meta['key'],
[
'show_in_rest' => true,
'single' => true,
'type' => $meta['type'],
'description' => $meta['description'],
]
);
}
以上内容未经测试,请参见此处的工作插件版本代码http://badlywired . com/2018/01/getting-post-meta-via-WordPress-rest-API/
对象类型需要'post'到自定义post类型名称
看https://codex.wordpress.org/Function_Reference/register_meta
第一个参数是object_type-有效的对象类型是由wordpress预定义的,CPT是一种帖子
到目前为止,我只能与Jira建立连接,但我不知道如何获取特定字段。据我所知,JIRA API的SearchResult类可以解决这个问题,但我不知道如何将它集成到我现有的代码中。任何帮助都将不胜感激。 Java版本-8,操作系统-视窗10,日蚀-火星 /*使用的罐子:jersey-bundle-1.9。罐子(https://mvnrepository.com/artifact/com.sun.je
我使用已签名的URL从使用Air的移动设备上传blob。 我有两个问题: 使用签名 URL 上传 Blob 时,我假设我不需要按照文档中所述包含所有标头。我是否认为我只需要对URL执行请求,并将编码到正文中的文件包含在正文中,设置为? http://msdn . Microsoft . com/en-us/library/windows azure/DD 179451 . aspx (Upload
如何使用ArrayList检索Student类的单个属性,或者检查列表中是否存在“AAA ”?
我正在使用使用Tweepy库的Python代码来检索特定主题标签的Twitter数据,但问题是我需要检索特定时期,例如,从2013年6月30日到2013年12月30日。我该怎么做?
我一直在使用贝宝的IPN来处理交易。我想构建一个发票搜索工具,以便能够出于各种原因搜索旧的或当前的用户付款。我今天花了一些时间设置PayPalPHP REST API SDK来促进这一点,并做了以下工作。 > 我创建了一个ApiContext使用启动的OAuthTokenCredential。 我创建了一个搜索对象使用广泛的日期跨度,我100%肯定应该返回结果。 然后,我利用搜索对象和API上下文
我试图用RESTAPI实现Spring Security性,并作为前端进行响应,因为这是我的第一个完整堆栈开发项目,我对如何实现正确的身份验证机制一无所知。 我已经搜索了很多,找到了关于Spring Security with Basic Auth的文章,但我无法弄清楚如何将该身份验证转换为其他api,然后通过会话/cookie进行管理。即使我得到的任何github引用都很旧,或者它们还没有完全迁