Php WordPressRESTAPI端点

Php WordPressRESTAPI端点,php,angularjs,wordpress,rest,Php,Angularjs,Wordpress,Rest,我正在写一个有角度的WP主题,并试图减少post页面上HTTP请求的数量 在帖子页面上,我想列出所有不同的分类法、最近的帖子、特色图片和其他一些东西。我可以使用RESTAPIv2插件处理单个请求,但这需要大量的请求 我希望为我的主题创建一个端点,解析post-slug,并在一个请求中将其全部返回,但我似乎无法理解 我正在考虑使用查询字符串来获取slug。以下是我用来测试它的方法: function app_get_post($data) { global $wp_query;

我正在写一个有角度的WP主题,并试图减少post页面上HTTP请求的数量

在帖子页面上,我想列出所有不同的分类法、最近的帖子、特色图片和其他一些东西。我可以使用RESTAPIv2插件处理单个请求,但这需要大量的请求

我希望为我的主题创建一个端点,解析post-slug,并在一个请求中将其全部返回,但我似乎无法理解

我正在考虑使用查询字符串来获取slug。以下是我用来测试它的方法:

function app_get_post($data) {
    global $wp_query;

    return [
        'test' => $data,
        'vars' => $wp_query->query_vars
    ];
}

add_action( 'rest_api_init', function () {
    register_rest_route( 'app/v1', '/post', [
        'methods' => 'GET',
        'callback' => 'app_get_post',
    ] );
} );
以下是它产生的结果:

{
test: { },
vars: [ ]
}
我确实尝试使用
query\u vars
钩子添加查询变量,但也没有成功


有什么建议吗?我这样做对吗?

所以我也在学习这一切,还没有取得成功,但我会提供我的研究要点。我知道,要点击自定义Post类型,您需要将
show_in_rest=true
添加到
register_Post_Type()
数组中,或稍后将其挂接

然而,您的示例显示了post的使用,我猜post应该在rest中显示它的注册位置。。。我决定签入wp includes/post.php,但它并不存在

// ACCESSING A CPT FROM ANYWHERE (unable to add show_in_rest=true to the register_post_type() hook into it!)
// http://scottbolinger.com/custom-post-types-wp-api-v2/
function sb_add_cpts_to_api( $args, $post_type ) {
    if ( 'movie' === $post_type ) {
        $args['show_in_rest'] = true;
        $args['rest_base'] = 'movie';
        // $args['rest_controller_class'] = 'WP_REST_Posts_Controller';
    }
    return $args;
}
add_filter( 'register_post_type_args', 'sb_add_cpts_to_api', 10, 2 );

您应该传递参数

function app_get_post($data) {

    return [
        'test' => $data["postid"]        
    ];
}

add_action( 'rest_api_init', function () {
    register_rest_route( 'app/v1', '/post/(?P<postid>\d+)', [
        'methods' => 'GET',
        'callback' => 'app_get_post',
    ] );
} )
函数app\u get\u post($data){
返回[
“测试”=>$data[“postid”]
];
}
添加操作('rest\u api\u init',函数(){
注册休息路线('app/v1','/post/(?P\d+)[
'方法'=>'获取',
“回调”=>“应用程序获取发布”,
] );
} )

请参阅示例

此处您需要传递参数,如下所示

//端点:{parameter 1}/{parameter 2}

register_rest_route( 'api', '/v1/getwp/(?P<param1>[a-z0-9\-]+)/(?P<param2>[a-z0-9\-]+)', array(
    'methods' => 'GET',
    'callback' => 'wpdaddStuff'

));
register_rest_route('api','/v1/getwp/(?P[a-z0-9\-]+)/(?P[a-z0-9\-]+)),数组(
'方法'=>'获取',
“回调”=>“wpdadstuff”
));
有关更多信息,您可以在此处查看此示例