WP REST API | RESTful URL参数

时间:2018-02-09 17:15:44

标签: php json wordpress rest wp-api

我正在以这种方式使用WP API创建自定义路线:

 register_rest_route( 'service/v1', 'shopping', array(
        'methods'  => WP_REST_Server::READABLE,
        'callback' => 'my_awesome_function',
        ));

我正在编写以下函数:

function my_awesome_function($request_data) {
    $parameters = $request_data->get_params();
    if( !isset( $parameters['product'] ) || empty($parameters['product']) ){
        return array( 'error' => 'No product provided' );
    }else{
        $product = $parameters['product'];\

       return array( 'Product' => $product );

    }
}

使用此结构可以很好地完成这项工作www.example.com/wp-json/service/v1/shopping?product=perfume

但是我希望它使用URL以RESTful方式工作:www.example.com/wp-json/service/v1/shopping/perfume

我是否应该改变注册路线的方式或者这是不可能的,需要通过.htaccess中的URL重写来完成?

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

register_rest_route( 'service/v1', 'shopping/(?P<id>[\d]+)', array(
    'methods'  => WP_REST_Server::READABLE,
    'callback' => 'my_awesome_function',
));

路径末尾的正则表达式将捕获一个或多个数字,并将其设置为“id”参数,然后您可以使用该参数获取相关产品

您可以使用以下内容:(?P<slug>[a-zA-Z0-9-]+)来捕获带有大写/小写字母,数字和/或短划线的“slug”