WordPress at a glance

register_rest_route() WP 1.0

Registers a REST API route.

No Hooks.

Return

true/false. True on success, false on error.

Usage

register_rest_route( $namespace, $route, $args, $override );
$namespace(string) (required)
The first URL segment after core prefix. Should be unique to your package/plugin.
$route(string) (required)
The base URL for route you are adding.
$args(array)
Either an array of options for the endpoint, or an array of arrays for multiple methods.
Default: empty array
$override(true/false)
If the route already exists, should we override it? True overrides, false merges (with newer overriding if duplicate keys exist).
Default: false

Code of register_rest_route: wp-includes/rest-api.php VER 4.9.8

<?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;
	} else if ( empty( $route ) ) {
		_doing_it_wrong( 'register_rest_route', __( 'Route must be specified.' ), '4.4.0' );
		return false;
	}

	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 );
		$arg_group['args'] = array_merge( $common_args, $arg_group['args'] );
	}

	$full_route = '/' . trim( $namespace, '/' ) . '/' . trim( $route, '/' );
	rest_get_server()->register_route( $namespace, $full_route, $args, $override );
	return true;
}

Related Functions

From tag: REST API

No comments
    Hello, !     Log In . Register