WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Купить персональные IPV4 и IPV6 прокси

get_plugins() WP 1.5.0

Получает все данные плагинов (активных и неактивных): файл, название, автор и т.д. Работает с папкой плагинов.

Функция соберет данные из всех основных файлов плагинов. Это файлы, в которых есть PHP комментарии описывающие плагин (заголовки плагина). В данные попадут названия найденных файлов и все данные из комментарий самого файла.

WordPress работает с плагинами расположенными только в каталогах: wp-content/plugins и wp-content/mu-plugins. Функция ищет файлы только в этих двух каталогах, поэтому рекомендуется, чтобы все файлы плагинов располагались в этих каталогах.

Аналогичная функция для получения данных тем: wp_get_themes()

Функция кэширует результат, когда указан параметр $plugin_folder.

Везде кроме админке, требует подключение файла:

require_once ABSPATH . 'wp-admin/includes/plugin.php';
Работает на основе: get_plugin_data()
✈ 1 раз = 0.008743с = очень медленно | 50000 раз = 2.13с = быстро | PHP 7.1.2, WP 4.7.4

Хуков нет.

Возвращает

Массив, где ключ - это путь к файлу, а значение - это массив данных плагина.

Использование

get_plugins( $plugin_folder );
$plugin_folder(строка)
Название папки отдельного плагина.
По умолчанию: ''

Примеры

#1 Получим данные всех плагинов

Следующий код вернет данные всех (не только активных) плагинов установленных на вашем сайте.

// Проверим зарегистрирована ли функция get_plugins(). Это нужно для фронт-энда
// обычно get_plugins() работает только в админ-панели.
if ( ! function_exists( 'get_plugins' ) ) {
	// подключим файл с функцией get_plugins()
	require_once ABSPATH . 'wp-admin/includes/plugin.php';
}

// получим данные плагинов
$all_plugins = get_plugins();

// Сохраним данные в лог ошибок, в котором можно будет посмотреть как выглядит полученный массив
error_log( print_r( $all_plugins, true ) );

Этот код запишет в лог подобные данные:

Array(
	[hello-dolly/hello.php] => Array
		(
			[Name] => Hello Dolly
			[PluginURI] => http://wordpress.org/extend/plugins/hello-dolly/
			[Version] => 1.6
			[Description] => This is not just a plugin, it symbolizes the hope and enthusiasm of an entire generation summed up in two words sung most famously by Louis Armstrong: Hello, Dolly. When activated you will randomly see a lyric from <cite>Hello, Dolly</cite> in the upper right of your admin screen on every page.
			[Author] => Matt Mullenweg
			[AuthorURI] => http://ma.tt/
			[TextDomain] => 
			[DomainPath] => 
			[Network] => 
			[Title] => Hello Dolly
			[AuthorName] => Matt Mullenweg

)
...
...

Список изменений

С версии 1.5.0 Введена.

Код get plugins: wp-admin/includes/plugin.php WP 5.2.2

<?php
function get_plugins( $plugin_folder = '' ) {

	$cache_plugins = wp_cache_get( 'plugins', 'plugins' );
	if ( ! $cache_plugins ) {
		$cache_plugins = array();
	}

	if ( isset( $cache_plugins[ $plugin_folder ] ) ) {
		return $cache_plugins[ $plugin_folder ];
	}

	$wp_plugins  = array();
	$plugin_root = WP_PLUGIN_DIR;
	if ( ! empty( $plugin_folder ) ) {
		$plugin_root .= $plugin_folder;
	}

	// Files in wp-content/plugins directory
	$plugins_dir  = @ opendir( $plugin_root );
	$plugin_files = array();
	if ( $plugins_dir ) {
		while ( ( $file = readdir( $plugins_dir ) ) !== false ) {
			if ( substr( $file, 0, 1 ) == '.' ) {
				continue;
			}
			if ( is_dir( $plugin_root . '/' . $file ) ) {
				$plugins_subdir = @ opendir( $plugin_root . '/' . $file );
				if ( $plugins_subdir ) {
					while ( ( $subfile = readdir( $plugins_subdir ) ) !== false ) {
						if ( substr( $subfile, 0, 1 ) == '.' ) {
							continue;
						}
						if ( substr( $subfile, -4 ) == '.php' ) {
							$plugin_files[] = "$file/$subfile";
						}
					}
					closedir( $plugins_subdir );
				}
			} else {
				if ( substr( $file, -4 ) == '.php' ) {
					$plugin_files[] = $file;
				}
			}
		}
		closedir( $plugins_dir );
	}

	if ( empty( $plugin_files ) ) {
		return $wp_plugins;
	}

	foreach ( $plugin_files as $plugin_file ) {
		if ( ! is_readable( "$plugin_root/$plugin_file" ) ) {
			continue;
		}

		$plugin_data = get_plugin_data( "$plugin_root/$plugin_file", false, false ); //Do not apply markup/translate as it'll be cached.

		if ( empty( $plugin_data['Name'] ) ) {
			continue;
		}

		$wp_plugins[ plugin_basename( $plugin_file ) ] = $plugin_data;
	}

	uasort( $wp_plugins, '_sort_uname_callback' );

	$cache_plugins[ $plugin_folder ] = $wp_plugins;
	wp_cache_set( 'plugins', $cache_plugins, 'plugins' );

	return $wp_plugins;
}

Cвязанные функции

Из метки: plugin (плагин)

Еще из раздела: Плагины, хуки

Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться