您可以通过rest_prepare_{$this->post_type}
过滤器,类似于自定义帖子类型的过滤器test_cpt
(注册于hierarchical
和show_in_rest
设置为true
):
add_filter( \'rest_prepare_test_cpt\', \'rest_prepare_test_cpt\' );
function rest_prepare_test_cpt( WP_REST_Response $response ) {
$data = $response->get_data();
if ( ! empty( $data[\'parent\'] ) ) {
if ( ! $parent_post = get_post( $data[\'parent\'] ) ) {
return $response;
}
// Include only some post data.
$data[\'parent_data\'] = [
\'title\' => get_the_title( $parent_post ), // or just $parent_post->post_title
\'excerpt\' => get_the_excerpt( $parent_post ), // or just $parent_post->post_excerpt
\'link\' => get_permalink( $parent_post ),
];
// Or include the whole data..
// $data[\'parent_data\'] = $parent_post; // object
// $data[\'parent_data\'] = $parent_post->to_array(); // array
$response->set_data( $data );
}
return $response;
}
WP_REST_Response
扩展
WP_HTTP_Response
定义了
get_data()
和
set_data()
方法。
请注意,如果设置不同的rest_controller_class
注册帖子类型时。(默认控制器类为WP_REST_Posts_Controller
触发上面使用的过滤器)