Rob*_*sen 5 wordpress wordpress-rest-api
我正在尝试为WordPress REST API创建自定义端点,并通过URL传递参数。
当前端点是:
/wp-json/v1/products/81838240219
我想要实现的是一个看起来像这样的端点,并且能够在回调中检索identifier参数。
/wp-json/v1/products?identifier=81838240219
// Custom api endpoint test
function my_awesome_func( $data ) {
$identifier = get_query_var( 'identifier' );
return $identifier;
}
add_action( 'rest_api_init', function () {
register_rest_route( 'api/v1', '/products=(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
) );
} );
Run Code Online (Sandbox Code Playgroud)
Rob*_*sen 13
我稍微修改了提供的答案以获得我想要的端点:
/wp-json/api/v1/product?identifier=81838240219
add_action( 'rest_api_init', function () {
register_rest_route( 'api/v1', '/product/', array(
'methods' => 'GET',
'callback' => 'ea_get_product_data',
) );
} );
function ea_get_product_data( $data ) {
$identifier = $data->get_param( 'identifier' );
return $identifier;
}
Run Code Online (Sandbox Code Playgroud)
小智 8
如果您想传递字母数字参数,请使用[a-zA-Z0-9-]
而不是\d
add_action( 'rest_api_init', function () {
register_rest_route( 'namespace/v1', '/product/(?P<id>[a-zA-Z0-9-]+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
) );
} );
Run Code Online (Sandbox Code Playgroud)
首先,您需要将名称空间传递给register_rest_route
像这样
add_action( 'rest_api_init', function () {
register_rest_route( 'namespace/v1', '/product/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
) );
} );
Run Code Online (Sandbox Code Playgroud)
您的名称空间namespace/v1
和路线是/product/{id}
这样的
/ namespace / v1 / product / 81838240219
现在您可以像这样在函数内部使用路由
function my_awesome_func( $data ) {
$product_ID = $data['id'];
}
Run Code Online (Sandbox Code Playgroud)
如果需要为ex添加选项。 / namespace / v1 / product / 81838240219?name = Rob
并在这样的函数中使用它
function my_awesome_func( $data ) {
$product_ID = $data['id'];
$name = $data->get_param( 'name' );
}
Run Code Online (Sandbox Code Playgroud)
该过程非常简单,但是需要您阅读本文档。
归档时间: |
|
查看次数: |
5309 次 |
最近记录: |