Пользовательская конечная точка API WordPress REST с параметром URL - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь создать пользовательскую конечную точку для 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',
  ) );
} );

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Я немного изменил предоставленный ответ, чтобы получить желаемую конечную точку:

/ WP-JSON / API / v1 / продукт? Идентификатор = 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;
}
0 голосов
/ 03 ноября 2018

Сначала вам нужно передать в пространство имен в 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',
    ) );
} );

Ваше пространство имен namespace/v1 и ваш маршрут /product/{id}, как это / пространство имен / v1 / продукт / 81838240219

и теперь вы можете использовать маршрут внутри вашей функции следующим образом:

function my_awesome_func( $data ) {
    $product_ID = $data['id'];
}

Если вам нужно добавить опции для ex. / пространство имен / v1 / продукт / 81838240219? Имя = Rob

и используйте его внутри функции вот так

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

Процесс очень прост, но требует, чтобы вы прочитали эту документацию

...