WP_REST_Templates_Controller::register_routes()publicWP 5.8.0

Registers the controllers routes.

Method of the class: WP_REST_Templates_Controller{}

No Hooks.

Return

null. Nothing (null).

Usage

$WP_REST_Templates_Controller = new WP_REST_Templates_Controller();
$WP_REST_Templates_Controller->register_routes();

Changelog

Since 5.8.0 Introduced.
Since 6.1.0 Endpoint for fallback template content.

WP_REST_Templates_Controller::register_routes() code WP 6.5.2

public function register_routes() {
	// Lists all templates.
	register_rest_route(
		$this->namespace,
		'/' . $this->rest_base,
		array(
			array(
				'methods'             => WP_REST_Server::READABLE,
				'callback'            => array( $this, 'get_items' ),
				'permission_callback' => array( $this, 'get_items_permissions_check' ),
				'args'                => $this->get_collection_params(),
			),
			array(
				'methods'             => WP_REST_Server::CREATABLE,
				'callback'            => array( $this, 'create_item' ),
				'permission_callback' => array( $this, 'create_item_permissions_check' ),
				'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::CREATABLE ),
			),
			'schema' => array( $this, 'get_public_item_schema' ),
		)
	);

	// Get fallback template content.
	register_rest_route(
		$this->namespace,
		'/' . $this->rest_base . '/lookup',
		array(
			array(
				'methods'             => WP_REST_Server::READABLE,
				'callback'            => array( $this, 'get_template_fallback' ),
				'permission_callback' => array( $this, 'get_item_permissions_check' ),
				'args'                => array(
					'slug'            => array(
						'description' => __( 'The slug of the template to get the fallback for' ),
						'type'        => 'string',
						'required'    => true,
					),
					'is_custom'       => array(
						'description' => __( 'Indicates if a template is custom or part of the template hierarchy' ),
						'type'        => 'boolean',
					),
					'template_prefix' => array(
						'description' => __( 'The template prefix for the created template. This is used to extract the main template type, e.g. in `taxonomy-books` extracts the `taxonomy`' ),
						'type'        => 'string',
					),
				),
			),
		)
	);

	// Lists/updates a single template based on the given id.
	register_rest_route(
		$this->namespace,
		// The route.
		sprintf(
			'/%s/(?P<id>%s%s)',
			$this->rest_base,
			/*
			 * Matches theme's directory: `/themes/<subdirectory>/<theme>/` or `/themes/<theme>/`.
			 * Excludes invalid directory name characters: `/:<>*?"|`.
			 */
			'([^\/:<>\*\?"\|]+(?:\/[^\/:<>\*\?"\|]+)?)',
			// Matches the template name.
			'[\/\w%-]+'
		),
		array(
			'args'   => array(
				'id' => array(
					'description'       => __( 'The id of a template' ),
					'type'              => 'string',
					'sanitize_callback' => array( $this, '_sanitize_template_id' ),
				),
			),
			array(
				'methods'             => WP_REST_Server::READABLE,
				'callback'            => array( $this, 'get_item' ),
				'permission_callback' => array( $this, 'get_item_permissions_check' ),
				'args'                => array(
					'context' => $this->get_context_param( array( 'default' => 'view' ) ),
				),
			),
			array(
				'methods'             => WP_REST_Server::EDITABLE,
				'callback'            => array( $this, 'update_item' ),
				'permission_callback' => array( $this, 'update_item_permissions_check' ),
				'args'                => $this->get_endpoint_args_for_item_schema( WP_REST_Server::EDITABLE ),
			),
			array(
				'methods'             => WP_REST_Server::DELETABLE,
				'callback'            => array( $this, 'delete_item' ),
				'permission_callback' => array( $this, 'delete_item_permissions_check' ),
				'args'                => array(
					'force' => array(
						'type'        => 'boolean',
						'default'     => false,
						'description' => __( 'Whether to bypass Trash and force deletion.' ),
					),
				),
			),
			'schema' => array( $this, 'get_public_item_schema' ),
		)
	);
}