search_theme_directories [ WordPress Function ]
search_theme_directories ( $force = false )
| Parameters: |
|
| Returns: |
|
| Defined at: |
|
Soorgelijke functies: register_theme_directory, get_template_directory, get_template_directory_uri, get_theme_updates, get_stylesheet_directory_uri
Search all registered theme directories for complete and valid themes.
Source
<?php
function search_theme_directories( $force = false ) {
global $wp_theme_directories;
if ( empty( $wp_theme_directories ) )
return false;
static $found_themes;
if ( ! $force && isset( $found_themes ) )
return $found_themes;
$found_themes = array();
$wp_theme_directories = (array) $wp_theme_directories;
// Set up maybe-relative, maybe-absolute array of theme directories.
// We always want to return absolute, but we need to cache relative
// use in for get_theme_root().
foreach ( $wp_theme_directories as $theme_root ) {
if ( 0 === strpos( $theme_root, WP_CONTENT_DIR ) )
$relative_theme_roots[ str_replace( WP_CONTENT_DIR, '', $theme_root ) ] = $theme_root;
else
$relative_theme_roots[ $theme_root ] = $theme_root;
}
if ( $cache_expiration = apply_filters( 'wp_cache_themes_persistently', false, 'search_theme_directories' ) ) {
$cached_roots = get_site_transient( 'theme_roots' );
if ( is_array( $cached_roots ) ) {
foreach ( $cached_roots as $theme_dir => $theme_root ) {
// A cached theme root is no longer around, so skip it.
if ( ! isset( $relative_theme_roots[ $theme_root ] ) )
continue;
$found_themes[ $theme_dir ] = array(
'theme_file' => $theme_dir . '/style.css',
'theme_root' => $relative_theme_roots[ $theme_root ], // Convert relative to absolute.
);
}
return $found_themes;
}
if ( ! is_int( $cache_expiration ) )
$cache_expiration = 1800; // half hour
} else {
$cache_expiration = 1800; // half hour
}
/* Loop the registered theme directories and extract all themes */
foreach ( $wp_theme_directories as $theme_root ) {
// Start with directories in the root of the current theme directory.
$dirs = @ scandir( $theme_root );
if ( ! $dirs )
return false;
foreach ( $dirs as $dir ) {
if ( ! is_dir( $theme_root . '/' . $dir ) || $dir[0] == '.' || $dir == 'CVS' )
continue;
if ( file_exists( $theme_root . '/' . $dir . '/style.css' ) ) {
// wp-content/themes/a-single-theme
// wp-content/themes is $theme_root, a-single-theme is $dir
$found_themes[ $dir ] = array(
'theme_file' => $dir . '/style.css',
'theme_root' => $theme_root,
);
} else {
$found_theme = false;
// wp-content/themes/a-folder-of-themes/*
// wp-content/themes is $theme_root, a-folder-of-themes is $dir, then themes are $sub_dirs
$sub_dirs = @ scandir( $theme_root . '/' . $dir );
if ( ! $sub_dirs )
return false;
foreach ( $sub_dirs as $sub_dir ) {
if ( ! is_dir( $theme_root . '/' . $dir ) || $dir[0] == '.' || $dir == 'CVS' )
continue;
if ( ! file_exists( $theme_root . '/' . $dir . '/' . $sub_dir . '/style.css' ) )
continue;
$found_themes[ $dir . '/' . $sub_dir ] = array(
'theme_file' => $dir . '/' . $sub_dir . '/style.css',
'theme_root' => $theme_root,
);
$found_theme = true;
}
// Never mind the above, it's just a theme missing a style.css.
// Return it; WP_Theme will catch the error.
if ( ! $found_theme )
$found_themes[ $dir ] = array(
'theme_file' => $dir . '/style.css',
'theme_root' => $theme_root,
);
}
}
}
asort( $found_themes );
$theme_roots = array();
$relative_theme_roots = array_flip( $relative_theme_roots );
foreach ( $found_themes as $theme_dir => $theme_data ) {
$theme_roots[ $theme_dir ] = $relative_theme_roots[ $theme_data['theme_root'] ]; // Convert absolute to relative.
}
if ( $theme_roots != get_site_transient( 'theme_roots' ) )
set_site_transient( 'theme_roots', $theme_roots, $cache_expiration );
return $found_themes;
}
?>
Examples [ wp-snippets.com ]
Top Google zoekresultaten
- Function Reference/search theme directories « WordPress Codex
Description. Search all registered theme directories for complete and valid themes. Usage. <?php search_theme_directories() ?> Parameters. None.
codex.wordpress.org - PHPXRef 0.7 : WordPress : /wp-includes/theme.php source
314 * @return array Valid themes found 315 */ 316 function search_theme_directories( $force = false ) { 317 global $wp_theme_directories; 318 if ( empty( ...
phpxref.ftwr.co.uk - WordPress trunk news #4
Mar 2, 2012 ... search_theme_directories has been completely rewritten and should result in a “ solid” performance increase, complete with database-based ...
codeseekah.com - wp_get_themes (WordPress Function) - WPSeek.com
Make sure the current theme wins out, in case search_theme_directories() picks the wrong // one in the case of a conflict. (Normally, last registered theme root ...
wpseek.com