Creating Custom REST API Endpoints in WordPress
WordPress comes with a powerful REST API that allows you to interact with your site programmatically. However, sometimes you might need to extend this functionality by creating custom API endpoints tailored to your needs.
In this post, I’ll walk you through how to create a custom REST API endpoint in WordPress using PHP. I was recently mucking around with this on World First Aid Day as I needed to get some remote content added from a non-Wordpress source.
Check this out:
Step 1: Register the Custom Endpoint
To add a custom REST API endpoint, you need to hook into the rest_api_init
action and use the register_rest_route
function. Here’s how:
function register_custom_api_endpoint() {
register_rest_route('custom/v1', '/data/', array(
'methods' => 'GET',
'callback' => 'custom_api_endpoint_callback',
));
}
add_action('rest_api_init', 'register_custom_api_endpoint');
This code registers a new route (/wp-json/custom/v1/data/
) which will respond to GET requests.
Step 2: Create the Callback Function
The callback function handles what data should be returned when the endpoint is hit. Here’s an example that returns a simple JSON object:
function custom_api_endpoint_callback() {
$response = array(
'status' => 'success',
'message' => 'Custom API data retrieved!',
);
return rest_ensure_response($response);
}
In this case, the API returns a success status and a custom message. You can expand this function to pull data from the WordPress database or any other source.
Step 3: Test the Custom Endpoint
Now that you’ve registered the endpoint and created a callback, you can test your new custom API by visiting:
https://yourwebsite.com/wp-json/custom/v1/data/
You should see a JSON response similar to this:
{
"status": "success",
"message": "Custom API data retrieved!"
}
Step 4: Adding Parameters to the Endpoint
To make your API more dynamic, you can accept parameters from the URL. Let’s modify the endpoint to handle query parameters like this:
function custom_api_endpoint_callback( $data ) {
$name = ( isset( $data['name'] ) ) ? $data['name'] : 'Guest';
$response = array(
'status' => 'success',
'message' => 'Hello, ' . $name . '!',
);
return rest_ensure_response( $response );
}
Now you can visit the endpoint like this:
https://yourwebsite.com/wp-json/custom/v1/data/?name=John
The response will be:
{
"status": "success",
"message": "Hello, John!"
}
Conclusion
By creating custom REST API endpoints in WordPress, you can easily extend your site’s functionality and create custom solutions that interact with external systems. It’s a powerful feature for developers looking to build flexible integrations.
For a demo of this, check out World First Aid Day, a global initiative aimed at raising awareness on life-saving skills.
Top comments (1)
It's a really good article, but please add info about the
permission_callback
parameter.Forgetting about setting this is a very common vulnerability.