我正在尝试通过REST API获取原始内容
当我打电话时“http://mysite.tld/wp-json/wp/v2/pages/456“我接收渲染内容
"content": {
"rendered": "<div id=\\"something\\"></div>\\n",
"protected": false
},
但我希望内容不被渲染
LE:我在/wp-includes/restapi/endpoints/class-wp-rest-posts-controller中找到了一些东西。php
if ( ! empty( $schema[\'properties\'][\'content\'] ) ) {
$data[\'content\'] = array(
\'raw\' => $post->post_content,
/** This filter is documented in wp-includes/post-template.php */
\'rendered\' => post_password_required( $post ) ? \'\' : apply_filters( \'the_content\', $post->post_content ),
\'protected\' => (bool) $post->post_password,
);
}
如果我更换
\'rendered\' => post_password_required( $post ) ? \'\' : apply_filters( \'the_content\', $post->post_content ),
使用
\'rendered\' => $post->post_content,
它工作得很好,但我如何从自定义插件编辑它?顺便说一句:我注意到api响应中缺少“raw”
最合适的回答,由SO网友:birgire 整理而成
这是意料之中的,因为它取决于上下文。
原始内容将显示在edit
但不是view
或embed
上下文
它通过WP_REST_Controller::filter_response_by_context()
方法
您始终可以使用以下命令向响应中添加新字段register_rest_field()
其中get_callback
回调函数接收包含post数据(包括原始内容)的输入数组。
但是,你应该注意不要泄露出去,例如受密码保护的帖子或用短代码隐藏的内容。