wp_get_themes() WP 3.4.0

Отримує дані всіх тем (шаблонів) із папки “themes”. Дані віддаються як масив об’єктів: кожен об’єкт набір даних теми.

Швидкість роботи функції залежить від того, скільки у вас тем у папці “themes”. Тому з метою продуктивності обмежтеся функцією wp_get_theme() , якщо це можливо.

Якщо потрібно отримати назви всіх тем (назви директорій тем), можна скористатися функцією search_theme_directories() .

Аналогічна функція отримання даних плагінів: get_plugins()

Працює на основі:
search_theme_directories()

Хуків немає.

Повертає

WP_Theme[].

Використання

wp_get_themes ($ args);

Параметри $args

$args
(масив)

Масив аргументів щодо яких буде отримано результат. Може приймати такі аргументи:

  • errors– Може бути:

    • “true” – щоб повернути теми з помилками.
    • “False” – щоб повернути теми без помилок.
    • “null” – щоб повернути усі теми.

    за промовчанням false

  • allowed (мультисайти) – Можливо:

    • “true” – щоб повернути лише доступні для сайту теми.
    • “false” – щоб повернути недоступні для сайту теми.
    • “site” – щоб повернути доступні теми для сайтів мережі.
    • “network” – щоб повернути доступні теми для самої мережі.
    • “null” – поверне усі теми.

    за замовчуванням null

  • blog_id (мультисайти) – ID блог теми для якого доступні. За замовчуванням 0 (означає поточний блог).

За замовчуванням: array( ‘errors’ => false , ‘allowed’ => null, ‘blog_id’ => 0 )

Приклади

0

#1 Отримаємо дані всіх існуючих тем (шаблонів)

$themes = wp_get_themes();

$themes міститиме наступний масив:

Array
(
	[twentyfourteen] => WP_Theme Object
		(
			[theme_root:WP_Theme:private] => C:/sites/example.com/www/wp-content/themes
			[headers:WP_Theme:private] => Array
				(
					[Name] => Twenty Fourteen
					[ThemeURI] => http://wordpress.org/themes/twentyfourteen
					[Description] => У 2014 році, наші більш повні теми, що ви створили відповідний магазин веб-сайту з sleek, modern design. Feature your favorite homepage content in either grid or slider. Використовуйте три widget areas для customize вашого веб-сайту, і зміна нашого вмісту посібник з повною width page template and contributor page to show off your authors. Creating a magazine website з WordPress має невідомий easier.
					[Author] => the WordPress team
					[AuthorURI] => http://wordpress.org/
					[Version] => 1.0
					[Template] =>
					[Status] =>
					[Tags] => black, green, white, light, dark, 2-columns, 3-columns, left-sidebar, right-sidebar, fixed-layout, responsive-layout, custom-background, custom-header, custom-menu , editor-style, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready, accessibility-ready
					[TextDomain] => twentyfourteen
					[DomainPath] =>
				)

			[headers_sanitized:WP_Theme:private] =>
			[name_translated:WP_Theme:private] =>
			[errors:WP_Theme:private] =>
			[stylesheet:WP_Theme:private] => twentyfourteen
			[template:WP_Theme:private] => twentyfourteen
			[parent:WP_Theme:private] =>
			[theme_root_uri:WP_Theme:private] =>
			[textdomain_loaded:WP_Theme:private] =>
			[cache_hash:WP_Theme:private] => c997aa5b2bccf71942eebe3c280effb1
		)

	[twentythirteen] => WP_Theme Object
		(
		...
		)

	[twentytwelve] => WP_Theme Object
		(
		...
		)
)

нотатки

  • Global. Масив. $wp_theme_directories

список змін

З версії 3.4.0Введено.

Код wp_get_themes() WP 6.0.2

function wp_get_themes( $args = array() ) {
	Global $wp_theme_directories;

	$defaults = array(
		'errors' => false,
		'allowed' => null,
		'blog_id' => 0,
	);
	$ args = wp_parse_args ($ args, $ defaults);

	$theme_directories = search_theme_directories();

	if ( is_array( $wp_theme_directories ) && count( $wp_theme_directories ) > 1 ) {
		// Make sure the active theme wins out, in case search_theme_directories() picks the wrong
		// Один у випадку з conflict. (Normally, last registered theme root wins.)
		$current_theme = get_stylesheet();
		if ( isset ( $ theme_directories [ $ current_theme ] ) ) {
			$ root_of_current_theme = get_raw_theme_root ($ current_theme);
			if ( ! in_array( $root_of_current_theme, $wp_theme_directories, true ) ) {
				$root_of_current_theme = WP_CONTENT_DIR . $root_of_current_theme;
			}
			$theme_directories[ $current_theme ]['theme_root'] = $root_of_current_theme;
		}
	}

	if ( empty( $theme_directories ) ) {
		return array();
	}

	if ( is_multisite() && null !== $args['allowed'] ) {
		$allowed = $args['allowed'];
		if ( 'network' === $allowed ) {
			$theme_directories = array_intersect_key( $theme_directories, WP_Theme::get_allowed_on_network() );
		} elseif ( 'site' === $allowed ) {
			$theme_directories = array_intersect_key( $theme_directories, WP_Theme::get_allowed_on_site( $args['blog_id'] ) );
		} elseif ($ allowed) {
			$theme_directories = array_intersect_key( $theme_directories, WP_Theme::get_allowed( $args['blog_id'] ) );
		} else {
			$theme_directories = array_diff_key( $theme_directories, WP_Theme::get_allowed( $args['blog_id'] ) );
		}
	}

	$themes = array();
	static $_themes = array();

	foreach ( $theme_directories as $theme => $theme_root ) {
		if ( isset( $_themes[ $theme_root['theme_root'] . '/' . $theme ) ) ) {
			$themes[ $theme ] = $_themes[ $theme_root['theme_root'] . '/'. $ theme];
		} else {
			$themes[ $theme ] = new WP_Theme( $theme, $theme_root['theme_root'] );

			$_themes[ $theme_root['theme_root'] . '/'. $theme] = $themes[$theme];
		}
	}

	if ( null !== $args['errors'] ) {
		foreach ( $themes as $theme => $wp_theme ) {
			if ( $wp_theme->errors() != $args['errors'] ) {
				unset ($ themes [$ theme]);
			}
		}
	}

	return $themes;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *