Home >CMS Tutorial >WordPress >Adding Custom Routes to the WordPress REST API
WordPress REST API Custom Routing: A Powerful Tool to Extend API Features
This article explores the custom routing capabilities of the WordPress REST API and shows how to create customized API solutions. Custom routing provides more granular control and scalability than using only default routing.
Core points:
register_rest_route()
function and combine the rest_api_init
action to add a custom route. You need to specify a namespace, routing path, and an array of endpoints containing methods, callback functions, and permission information. Beyond the default route: Build infinite possibilities
Most of the discussion about the WordPress REST API focuses on querying the default route, which makes it look like a single API, such as the Twitter API. However, the WordPress REST API is not a single API, but a collection of millions of highly customizable APIs that can also be used as a tool for building APIs. Default routing is a compromise solution for many site requirements, and not all tasks can be completed by default routing alone.Just as WordPress is not just a global WP_Query object, the REST API is not just a default API. Using default routing is like never creating your own WP_Query object in a traditional WordPress project, or overriding the default query in
. Although possible, not all work can be done solely by default WordPress URL routing. pre_get_posts
The same is true for the
Add a route: Functionregister_rest_route()
that allows adding routes to the REST API and passing in an array of endpoints. For each endpoint, not only is it provided to handle the request, but it can also define the fields required in the query, including default values, clean and validation callbacks, and separate permission callbacks. register_rest_route()
This article will focus on three aspects: callback functions, field parameters, and permission checking. They show the architecture of the API and demonstrate with an example how to create a custom route with two endpoints for display by Easy Product information in Digital Downloads (EDD)-driven e-commerce websites.
Set the route: namespace and route path
When defining a custom route, use the function in the rest_api_init
action. This function accepts four parameters: register_rest_route()
Namespace: All routes must be named spatialized as the next URL segment after "wp-json". The default route's namespace is . Namespaces avoid routing conflicts. wp
Route path: URL after the namespace. For example, "/products" or "/products/(?P[d] )" (allows the use of numbers in the last URL segment, such as post ID).
Endpoint array: Define the endpoint of the route, including methods, callback functions, parameters, etc.
Parameters (optional): override
Boolean value for handling conflicts with defined routes. The default is , attempt to merge the route; set to false
to replace the declared route. true
Set endpoints: methods and fields
The endpoint needs to define one or more HTTP transport methods (GET/POST/PUT/DELETE). Methods can be defined using constants in the class, such as WP_REST_Server
(only GET requests are allowed) or WP_REST_Server::READABLE
(all methods are allowed). WP_REST_Server::ALLMETHODS
Callback function and permission callback function
The callback function for each endpoint (specified in the key) is the method the request will be dispatched to (if the permission callback function passes). The permission callback function (specified in the callback
key) checks whether the current user has permission to access the endpoint. permission_callback
Processing and responding to requests The
callback function receives the object, and can use the WP_REST_Request
method to obtain the cleaned and verified parameters. You can use the get_params()
function to create rest_ensure_response()
objects to ensure that the response is in the correct JSON format and include the necessary headers. WP_REST_Response
Summary: Custom API, unlimited possibilities
The default routing of the WordPress REST API is very useful, but custom routing provides more control and scalability. Creating a custom route is an effective solution when the default route fails to meet the needs.The above is the detailed content of Adding Custom Routes to the WordPress REST API. For more information, please follow other related articles on the PHP Chinese website!