web-dev-qa-db-ja.com

レンダリングされていないコンテンツ REST API

私はREST AP​​Iを通して生のコンテンツを得ようとしています

" http://mysite.tld/wp-json/wp/v2/pages/456 "を呼び出すと、レンダリングされたコンテンツが表示されます

"content": {
"rendered": "<div id=\"something\"></div>\n",
"protected": false
},

コンテンツをレンダリングしないようにしたい

LE:/wp-includes/rest-api/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応答から欠落している気づいた

2
Kovi

これは context に依存するため、予想されることです。

生のコンテンツはeditに対して表示されますが、viewまたはembedコンテキストに対しては表示されません。

それはWP_REST_Controller::filter_response_by_context()メソッドを通してフィルタリングされます。

register_rest_field() を使用して、いつでもレスポンスに新しいフィールドを追加できます。ここで、get_callbackコールバックは、生データを含む投稿データを含む入力配列を受け取ります。

しかし、それからあなたは漏れないように気をつけなければなりません。パスワードで保護された投稿またはショートコードで隠されたコンテンツ。

2
birgire