WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

get_plugin_data() WP 1.5.0

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

Все данные берутся из заголовков плагина. Данные плагина должны располагаться на отдельной строке. В описании плагинов не должно быть переносов строк, иначе только часть описания будет показана. Формат заголовка такой:

/*
Plugin Name: Название
Plugin URI: Ссылка на инфо о плагине
Description: Описание
Author: Имя автора
Author URI: Ссылка на автора
Version: Версия плагина
Text Domain: Идентификатор для данных перевода. Указывается в plugin_text_domain()
Domain Path: Путь до файла перевода. Нужен если файл не в той же папки в которой 
			 файл с этими данными. Например, .mo файл находится в папке plugin/lang,
			 а файл плагина в plugin/file.php, тогда тут указываем "lang"
Network: Укажите "Network: true" для возможности активировать плагин 
		 по все сети сайтов (для Мультисайтовой сборки).
*/

Функция обрабатывает только первые 8kiB (6000-8000 символов) информации, и если данные плагина получаются больше, то автору придется их уменьшить или переместить данные плагина наверх (некоторые авторы перед данными добавляют информацию о лицензии и т.п.).

Функция работает только в админ-панели. Кроме этого, работает не сразу, а где-то начиная с события admin_init, т.е. во время событий: plugins_loaded, init, wp_loaded функция еще не определена.

Является основой для: get_plugins()
Работает на основе: get_file_data()

Хуков нет.

Возвращает

Массив данных:

Array (
	[Name]        => Democracy Poll
	[PluginURI]   => http://wp-kama.ru/id_67/plagin-oprosa-dlya-wordpress-democracy-poll.html
	[Version]     => 4.5.4
	[Description] => Позволяет создавать опросы.
	[Author]      => <a href="/">Kama</a>
	[AuthorURI]   => http://wp-kama.ru/
	[TextDomain]  => dem
	[DomainPath]  => languages
	[Network]     => 
	[Title]       => <a href="/id_67/plagin-oprosa-dlya-wordpress-democracy-poll.html">Democracy Poll</a>
	[AuthorName]  => Kama
)

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

get_plugin_data( $plugin_file, $markup, $translate );
$plugin_file(строка) (обязательный)
Путь к основному файлу плагина. Пр: __FILE__
$markup(логический)
Выводить HTML разметку в данных (true) или нет (false).
По умолчанию: true
$translate(логический)
Переводить данные или нет.
По умолчанию: true

Примеры

#1 Получим данные

Пример, как можно получить данные плагина при создании плагина.

Хотя, я что-то с трудом могу представить, где это может понадобиться, поэтому пусть это будет демонстрационный пример:

add_action('admin_init', function(){
	$data = get_plugin_data(__FILE__);
	echo $data['Name']; // выведет название плагина
} );

Код get_plugin_data: wp-admin/includes/plugin.php VER 4.9.8

<?php
function get_plugin_data( $plugin_file, $markup = true, $translate = true ) {

	$default_headers = array(
		'Name' => 'Plugin Name',
		'PluginURI' => 'Plugin URI',
		'Version' => 'Version',
		'Description' => 'Description',
		'Author' => 'Author',
		'AuthorURI' => 'Author URI',
		'TextDomain' => 'Text Domain',
		'DomainPath' => 'Domain Path',
		'Network' => 'Network',
		// Site Wide Only is deprecated in favor of Network.
		'_sitewide' => 'Site Wide Only',
	);

	$plugin_data = get_file_data( $plugin_file, $default_headers, 'plugin' );

	// Site Wide Only is the old header for Network
	if ( ! $plugin_data['Network'] && $plugin_data['_sitewide'] ) {
		/* translators: 1: Site Wide Only: true, 2: Network: true */
		_deprecated_argument( __FUNCTION__, '3.0.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), '<code>Site Wide Only: true</code>', '<code>Network: true</code>' ) );
		$plugin_data['Network'] = $plugin_data['_sitewide'];
	}
	$plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) );
	unset( $plugin_data['_sitewide'] );

	// If no text domain is defined fall back to the plugin slug.
	if ( ! $plugin_data['TextDomain'] ) {
		$plugin_slug = dirname( plugin_basename( $plugin_file ) );
		if ( '.' !== $plugin_slug && false === strpos( $plugin_slug, '/' ) ) {
			$plugin_data['TextDomain'] = $plugin_slug;
		}
	}

	if ( $markup || $translate ) {
		$plugin_data = _get_plugin_data_markup_translate( $plugin_file, $plugin_data, $markup, $translate );
	} else {
		$plugin_data['Title']      = $plugin_data['Name'];
		$plugin_data['AuthorName'] = $plugin_data['Author'];
	}

	return $plugin_data;
}

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

Из метки: Данные файлов (files data get info)

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

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

2 коммента
  • glebkema4 cайт: glebkema.ru

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

    Подсмотрел решение в теме «Экстра».

    add_action( 'wp_enqueue_scripts', 'my_plugin_enqueue' );
    function my_plugin_enqueue() {
    	if ( ! is_admin() ) {
    		wp_enqueue_style( 'my-plugin', plugins_url( '/my-plugin.css', __FILE__ ), 
    						  array(), get_plugin_version() );
    	}
    }
    
    function get_plugin_version() {
    	if ( SCRIPT_DEBUG ) {
    		return time();
    	}
    	$plugin = get_plugin_data(__FILE__);
    	return $plugin['Version'];
    }
    1
    Ответитьгод назад #
    • Kama7019

      Немного усложненная конструкция, проще и быстрее просто при дебаге получать время изменения файла через filemtime('PATH_TO_FILE/style.css') и вставлять в 4 параметр wp_enqueue_style()...

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