get_plugin_data() WP 1.5.0

Отримує дані плагіна (зазначені в заголовках) по переданому шляху на основний файл плагіна.

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

/*
 * Plugin Name: Назва
 * Plugin URI: Посилання на інфо про плагін
 * Description: Опис
 * Автор: Ім'я автора
 * Author URI: Посилання на автора
 * Version: Версія плагіна
 * Requires at least: 5.8
 * Requires PHP: 7.4
 * Text Domain: Ідентифікатор даних перекладу. Вказується в plugin_text_domain()
 * Domain Path: Шлях до файлу перекладу. Потрібен якщо файл не в тій же папці, в якій
 * файл із цими даними. Наприклад, .mo файл знаходиться в папці plugin/lang,
 * а файл плагіна в plugin/file.php, тоді вказуємо "lang"
 * Network: Вкажіть "Network: true" для можливості активувати плагін
 * по всі мережі сайтів (для мультисайтового складання).
 * Update URI: https://example.com/link_to_update
 */

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

Функція працює лише в адмін-панелі. Крім цього, працює не одразу, а десь починаючи з події wp_loaded функція ще не визначена.

В якості альтернативи, коли потрібно отримати дані раніше, можна використовувати схожу функцію get_file_data() .

Якщо $markup = true( $translate = trueяк за замовчуванням), функція опосередковано викликає init .

Працює на основі:
get_file_data()
Основа для:
get_plugins()

Хуків немає.

Повертає

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

Array (
	[Name] => Democracy Poll
	[PluginURI] => http://wp-kama.ru/id_67/democracy-poll.html
	[Version] => 4.5.4
	[Description] => Дозволяє створювати опитування.
	[Author] => <a href="/">Kama</a>
	[AuthorURI] => http://wp-kama.ru/
	[AuthorName] => Kama
	[TextDomain] => dem
	[DomainPath] => languages
	[Network] =>
	[Title] => <a href="/id_67/democracy-poll.html">Democracy Poll</a>
	[RequiresWP] => 5.5
	[RequiresPHP] => 7.0
)

Мапінг термін: значення масиву – це рядок який повинен бути у файлі, ключ – відповідає ключу масива, що повертається:

$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',
	'RequiresWP' => 'Requires at least',
	'RequiresPHP' => 'Requires PHP',
	'UpdateURI' => 'Update URI',
);

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

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


Типово: true
$translate
(логічний)
Перекладати дані чи ні.


Типово: true

Приклади

0

#1 Отримаємо дані

Приклад, як можна отримати дані плагіна під час створення плагіна.

Хоча, я щось важко можу уявити, де це може знадобитися, тому нехай це буде демонстраційний приклад:

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

список змін

З версії 1.5.0Введено.
З версії 5.3.0Added support for Requires at least and Requires PHP headers.
З версії 5.8.0Added support for Update URI header.

Код get_plugin_data() WP 6.0.2

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',
		'RequiresWP' => 'Requires at least',
		'RequiresPHP' => 'Requires PHP',
		'UpdateURI' => 'Update URI',
		// 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;
}

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

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