Summery Summery
Registers a REST API route.
Syntax Syntax
Description Description
Note: Do not use before the ‘rest_api_init’ hook.
Parameters Parameters
- $namespace
-
(Required) The first URL segment after core prefix. Should be unique to your package/plugin.
- $route
-
(Required) The base URL for route you are adding.
- $args
-
(Optional) Either an array of options for the endpoint, or an array of arrays for multiple methods.
Default value: array()
- $override
-
(Optional) If the route already exists, should we override it? True overrides, false merges (with newer overriding if duplicate keys exist).
Default value: false
Return Return
(bool) True on success, false on error.
Source Source
File: wp-includes/rest-api.php
*/ function register_rest_route( $namespace, $route, $args = array(), $override = false ) { if ( empty( $namespace ) ) { /* * Non-namespaced routes are not allowed, with the exception of the main * and namespace indexes. If you really need to register a * non-namespaced route, call `WP_REST_Server::register_route` directly. */ _doing_it_wrong( 'register_rest_route', __( 'Routes must be namespaced with plugin or theme name and version.' ), '4.4.0' ); return false; } elseif ( empty( $route ) ) { _doing_it_wrong( 'register_rest_route', __( 'Route must be specified.' ), '4.4.0' ); return false; } $clean_namespace = trim( $namespace, '/' ); if ( $clean_namespace !== $namespace ) { _doing_it_wrong( __FUNCTION__, __( 'Namespace must not start or end with a slash.' ), '5.4.2' ); } if ( ! did_action( 'rest_api_init' ) ) { _doing_it_wrong( 'register_rest_route', sprintf( /* translators: %s: rest_api_init */ __( 'REST API routes must be registered on the %s action.' ), '<code>rest_api_init</code>' ), '5.1.0' ); } if ( isset( $args['args'] ) ) { $common_args = $args['args']; unset( $args['args'] ); } else { $common_args = array(); } if ( isset( $args['callback'] ) ) { // Upgrade a single set to multiple. $args = array( $args ); } $defaults = array( 'methods' => 'GET', 'callback' => null, 'args' => array(), ); foreach ( $args as $key => &$arg_group ) { if ( ! is_numeric( $key ) ) { // Route option, skip here. continue; } $arg_group = array_merge( $defaults, $arg_group );
Advertisement
Changelog Changelog
Version | Description |
---|---|
5.1.0 | Added a _doing_it_wrong() notice when not called on or after the rest_api_init hook. |
4.4.0 | Introduced. |