get_plugins

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

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

Функция соберет файлы из каталогов плагинов, в которых имеются данные о том, что это файл плагина (PHP комментарии в заголовке). Но это не значит, что весь код плагина должен быть в одном файле, его лучше логически разделять на несколько файлов – это удобно при расширении функционала. Держите весь код в одном плагине, только для маленьких плагинов, где не предусматривается расширения.

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

Хуков нет.

Возвращает

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

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

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

Примеры

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

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

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

	if ( ! $cache_plugins = wp_cache_get('plugins', '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;
}

Комментарии:


Оставить комментарий

Your email address will not be published. Required fields are marked *