The rest_api_init() WordPress PHP function registers rewrite rules for the REST API.
Usage
add_action('init', 'rest_api_init');
Parameters
- None
More information
See WordPress Developer Resources: rest_api_init()
Examples
Basic usage of rest_api_init()
In this example, we’ll register the REST API rewrite rules during the init
action.
function myplugin_register_rest_api() { // Register the rewrite rules for the REST API. rest_api_init(); } // Hook into the 'init' action to register the REST API. add_action('init', 'myplugin_register_rest_api');
Adding a custom REST API endpoint
In this example, we’ll register a custom REST API endpoint to fetch information about books.
function myplugin_register_book_endpoint() { register_rest_route('myplugin/v1', '/books', array( 'methods' => 'GET', 'callback' => 'myplugin_get_books', )); } function myplugin_get_books() { // Fetch and return book data. } // Hook into 'rest_api_init' to register the custom endpoint. add_action('rest_api_init', 'myplugin_register_book_endpoint');
Adding a custom REST API endpoint with parameters
In this example, we’ll register a custom REST API endpoint to fetch a specific book based on its ID.
function myplugin_register_book_by_id_endpoint() { register_rest_route('myplugin/v1', '/books/(?P<id>\d+)', array( 'methods' => 'GET', 'callback' => 'myplugin_get_book_by_id', )); } function myplugin_get_book_by_id($request) { // Fetch and return book data based on the provided ID. } // Hook into 'rest_api_init' to register the custom endpoint. add_action('rest_api_init', 'myplugin_register_book_by_id_endpoint');
Adding a custom REST API endpoint with authentication
In this example, we’ll register a custom REST API endpoint to update a book’s information. This endpoint will require authentication.
function myplugin_register_update_book_endpoint() { register_rest_route('myplugin/v1', '/books/(?P<id>\d+)', array( 'methods' => 'PUT', 'callback' => 'myplugin_update_book', 'permission_callback' => 'myplugin_permission_check', )); } function myplugin_update_book($request) { // Update and return book data. } function myplugin_permission_check() { // Check if the user has the necessary permissions. } // Hook into 'rest_api_init' to register the custom endpoint. add_action('rest_api_init', 'myplugin_register_update_book_endpoint');
Adding a custom REST API namespace
In this example, we’ll register a custom REST API namespace for a plugin.
function myplugin_register_namespace() { global $wp_rest_server; $wp_rest_server->register_route_namespace('myplugin/v1'); } // Hook into 'rest_api_init' to register the custom namespace. add_action('rest_api_init', 'myplugin_register_namespace');