通过REST API实现未呈现内容的基石

时间:2017-06-16 作者:Kovi

我正在尝试通过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”

1 个回复
最合适的回答,由SO网友:birgire 整理而成

这是意料之中的,因为它取决于上下文。

原始内容将显示在edit 但不是viewembed 上下文

它通过WP_REST_Controller::filter_response_by_context() 方法

您始终可以使用以下命令向响应中添加新字段register_rest_field() 其中get_callback 回调函数接收包含post数据(包括原始内容)的输入数组。

但是,你应该注意不要泄露出去,例如受密码保护的帖子或用短代码隐藏的内容。

结束