带有URL参数的WordPress REST API自定义端点

带有URL参数的WordPress REST API自定义端点,wordpress,wordpress-rest-api,Wordpress,Wordpress Rest Api,我正在尝试为WordPress REST API创建一个自定义端点,并通过URL传递参数 当前的端点是: /wp json/v1/products/81838240219 我试图实现的是这样一个端点,能够在回调中检索标识符参数 /wp-json/v1/products?identifier=81838240219 // Custom api endpoint test function my_awesome_func( $data ) { $identifier = get_query_v

我正在尝试为WordPress REST API创建一个自定义端点,并通过URL传递参数

当前的端点是:

/wp json/v1/products/81838240219

我试图实现的是这样一个端点,能够在回调中检索标识符参数

/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',
  ) );
} );
/wp json/v1/products?标识符=81838240219
//自定义api端点测试
函数my_awesome_func($data){
$identifier=get_query_var('identifier');
返回$identifier;
}
添加操作('rest\u api\u init',函数(){
注册rest路由('api/v1','/products=(?P\d+),数组(
'方法'=>'获取',
“回调”=>“我的超级棒”,
) );
} );

首先,您需要将名称空间传递到
注册\u rest\u路径

像这样

add_action( 'rest_api_init', function () {
    register_rest_route( 'namespace/v1', '/product/(?P<id>\d+)', array(
        'methods' => 'GET',
        'callback' => 'my_awesome_func',
    ) );
} );
如果您需要为ex添加选项。 /namespace/v1/product/81838240219?name=Rob

在函数中使用它,就像这样

function my_awesome_func( $data ) {
    $product_ID = $data['id'];
    $name = $data->get_param( 'name' );
}

该过程非常简单,但需要您阅读此

我稍微修改了提供的答案,以获得所需的端点:

/wp json/api/v1/product?标识符=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;
}

令人惊叹的。非常感谢你的帮助。
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;
}