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