get_theme_root()WP 1.5.0

Retrieve path to themes directory.

Does not have trailing slash.

1 time — 0.00001 sec (speed of light) | 50000 times — 0.01 sec (speed of light) | PHP 7.4.8, WP 5.6.2
Hooks from the function

Return

String. Themes directory path.

Usage

get_theme_root( $stylesheet_or_template );
$stylesheet_or_template(string)
The stylesheet or template name of the theme.
Default: to leverage the main theme root

Examples

0

#1 Get the full path to the themes directory:

echo get_theme_root();             //> /home/k/foo/example.com/www/wp-content/themes
echo get_theme_root( 'my-theme' ); //> /home/k/foo/example.com/www/wp-content/themes
0

#2 Number of subdirectories in the themes directory

function display_themes_subdirs_count_info(){

  $theme_root = get_theme_root();
  $files_array = glob( "$theme_root/*", GLOB_ONLYDIR );

  echo count( $files_array ) . " subdirectories in the directory: $theme_root";
}

Notes

  • Global. Array. $wp_theme_directories

Changelog

Since 1.5.0 Introduced.

get_theme_root() code WP 6.4.3

function get_theme_root( $stylesheet_or_template = '' ) {
	global $wp_theme_directories;

	$theme_root = '';

	if ( $stylesheet_or_template ) {
		$theme_root = get_raw_theme_root( $stylesheet_or_template );
		if ( $theme_root ) {
			/*
			 * Always prepend WP_CONTENT_DIR unless the root currently registered as a theme directory.
			 * This gives relative theme roots the benefit of the doubt when things go haywire.
			 */
			if ( ! in_array( $theme_root, (array) $wp_theme_directories, true ) ) {
				$theme_root = WP_CONTENT_DIR . $theme_root;
			}
		}
	}

	if ( ! $theme_root ) {
		$theme_root = WP_CONTENT_DIR . '/themes';
	}

	/**
	 * Filters the absolute path to the themes directory.
	 *
	 * @since 1.5.0
	 *
	 * @param string $theme_root Absolute path to themes directory.
	 */
	return apply_filters( 'theme_root', $theme_root );
}