Пользовательская конечная точка WordPress REST API с параметром URL

Я пытаюсь создать настраиваемую конечную точку для 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',
  ) );
} );
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
17
0
20 372
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Сначала вам нужно передать пространство имен в 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}, как это / namespace / v1 / product / 81838240219

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

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

Если вам нужно добавить опции для ex. / namespace / v1 / product / 81838240219? name = Роб

и используйте его внутри функции, подобной этой

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

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

Потрясающие. Большое спасибо за Вашу помощь.

Rob Gelhausen 03.11.2018 18:00

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

/ 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;
}

Другие вопросы по теме