I am trying to create a custom endpoint for the WordPress REST API and pass parameters through the URL.
The endpoint currently is:
/wp-json/v1/products/81838240219
What I am trying to achieve is an endpoint that looks like this and being able to retrieve the identifier parameter in the callback.
/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',
) );
} );
First you need to pass in the namespace to register_rest_route
Like this
add_action( 'rest_api_init', function () {
register_rest_route( 'namespace/v1', '/product/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'my_awesome_func',
) );
} );
Your name space namespace/v1
and your route is /product/{id}
like this
/namespace/v1/product/81838240219
and now you can use the route inside your function like this
function my_awesome_func( $data ) {
$product_ID = $data['id'];
}
If you need to add options for ex. /namespace/v1/product/81838240219?name=Rob
and use it inside the function like this
function my_awesome_func( $data ) {
$product_ID = $data['id'];
$name = $data->get_param( 'name' );
}
The process is very simple but requires you to read this documentation