【问题标题】:WP REST API | RESTful URL parametersWP REST API | RESTful URL 参数
【发布时间】:2018-07-20 12:36:16
【问题描述】:

我正在以这种方式使用 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 重写来完成?

【问题讨论】:

标签: php json wordpress rest wp-api


【解决方案1】:

你可以使用类似的东西:

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

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

您可以使用类似:(?P&lt;slug&gt;[a-zA-Z0-9-]+) 来捕获带有大写/小写字母、数字和/或破折号的“slug”

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多