WP_REST_Templates_Controller::_sanitize_template_id()publicWP 5.9.0

Requesting this endpoint for a template like 'twentytwentytwo//home' requires using a path like /wp/v2/templates/twentytwentytwo//home. There are special cases when WordPress routing corrects the name to contain only a single slash like 'twentytwentytwo/home'.

This method doubles the last slash if it's not already doubled. It relies on the template ID format {theme_name}//{template_slug} and the fact that slugs cannot contain slashes.

Method of the class: WP_REST_Templates_Controller{}

No Hooks.

Return

String. Sanitized template ID.

Usage

$WP_REST_Templates_Controller = new WP_REST_Templates_Controller();
$WP_REST_Templates_Controller->_sanitize_template_id( $id );
$id(string) (required)
Template ID.

Notes

Changelog

Since 5.9.0 Introduced.

WP_REST_Templates_Controller::_sanitize_template_id() code WP 6.5.2

public function _sanitize_template_id( $id ) {
	$id = urldecode( $id );

	$last_slash_pos = strrpos( $id, '/' );
	if ( false === $last_slash_pos ) {
		return $id;
	}

	$is_double_slashed = substr( $id, $last_slash_pos - 1, 1 ) === '/';
	if ( $is_double_slashed ) {
		return $id;
	}
	return (
		substr( $id, 0, $last_slash_pos )
		. '/'
		. substr( $id, $last_slash_pos )
	);
}