在wp-json/wp/v2/Search中添加帖子字段

时间:2020-10-07 作者:dievardump

我正在尝试在wp-json/wp/v2/search 获取端点,但此端点似乎没有考虑register_rest_field 方法

add_action(\'rest_api_init\', function() {

register_rest_field(\'post\', \'excerpt\', array(
    \'get_callback\' => function ($post_arr) {
        die(var_dump($post_arr));
        return $post_arr[\'excerpt\'];
    },
));

register_rest_field(\'page\', \'excerpt\', array(
    \'get_callback\' => function ($post_arr) {
        die(var_dump($post_arr));
        return $post_arr[\'excerpt\'];
    },
));

});
这导致wp-json/wp/v2/pageswp-json/wp/v2/posts 去死,但是wp-json/wp/v2/search 虽然它可以呈现帖子和页面,但效果很好。

你知道我如何将我的摘录添加到wp-json/wp/v2/search 路线

2 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

对于搜索端点,对象类型(的第一个参数register_rest_field()) 是search-result 而不是岗位类型(例如。post, page, 等等)。

所以试试这个,对我来说很有用:

add_action( \'rest_api_init\', function () {
    // Registers a REST field for the /wp/v2/search endpoint.
    register_rest_field( \'search-result\', \'excerpt\', array(
        \'get_callback\' => function ( $post_arr ) {
            return $post_arr[\'excerpt\'];
        },
    ) );
} );

SO网友:Ian Dunn

仅嵌入具有embed 上下文您可以使用"rest_{$post_type}_item_schema" 滤器

--https://core.trac.wordpress.org/ticket/51596

这里有一个例子。注意,父字段content 需要为子字段添加上下文,如content.rendered 出现。

add_filter( \'rest_\' . POST_TYPE . \'_item_schema\', function( $schema ) {
    $schema[\'properties\'][\'content\'][\'context\'][]                           = \'embed\';
    $schema[\'properties\'][\'content\'][\'properties\'][\'rendered\'][\'context\'][] = \'embed\';

    return $schema;
} );
这感觉有点不一样。”;“正确”;对我来说register_rest_field().