Функция GET_PLUGIN_DATA() в WordPress 1.5.0: описание и примеры

# Функция GET_PLUGIN_DATA() в WordPress 1.5.0

Функция GET_PLUGIN_DATA() анализирует содержимое плагина, чтобы получить метаданные о нём.

## Заголовки плагина

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

```plaintext
/*
Plugin Name: Название плагина.
Plugin URI: Главная страница плагина.
Description: Описание плагина.
Author: Имя автора плагина.
Author URI: Ссылка на сайт автора.
Version: Версия плагина.
Text Domain: (необязательно) Уникальный идентификатор, должен совпадать с тем, который используется в load_plugin_textdomain().
Domain Path: (необязательно) Полезно, если переводы находятся в папке выше базового каталога плагина. Например, если файлы .mo находятся в папке locale, то Domain Path будет "/locale/" и должен начинаться с косой черты. По умолчанию указывается базовая папка, в которой находится плагин.
Network: (необязательно) Укажите "Network: true", чтобы требовать активацию плагина на всех сайтах в установке. Это предотвратит активацию плагина на одном сайте, когда включён мультисайт.
Requires at least: (необязательно) Укажите минимально необходимую версию WordPress.
Requires PHP: (необязательно) Укажите минимально необходимую версию PHP.
*/

Первый блок данных размером 8 КБ будет извлечён, и если данные плагина не находятся в этих первых 8 КБ, автор плагина должен исправить его и переместить заголовки данных плагина вверх.

Файл плагина предполагается с правами доступа, позволяющими скриптам читать файл. Однако эта проверка не выполняется, и файл открывается только для чтения.

Важно

  • Использует: get_file_data()
  • Используется: get_plugins()

Возврат

Функция возвращает массив с данными плагина. Значения будут пустыми, если они не предоставлены плагином.

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

get_plugin_data( $plugin_file, $markup, $translate );
  • $plugin_file (string, обязательный): Абсолютный путь к главному файлу плагина.
  • $markup (true|false): Если возвращаемые данные должны содержать HTML-разметку. По умолчанию: true.
  • $translate (true|false): Если возвращаемые данные должны быть переведены. По умолчанию: true.

Примеры

Пример 1: Как получить данные о плагине

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

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

add_action( 'admin_init', function(){

    // добавляем функцию, если она нужна
    if( ! function_exists('get_plugin_data') ){
        require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
    }

    $plugin_data = get_plugin_data( __FILE__ );

    // выводим имя плагина
    echo $plugin_data['Name']; 

    // выводим все данные
    print_r( $plugin_data );
});

Альтернативой (в зависимости от обстоятельств) может быть использование get_file_data() вместо этого. Эта функция использует те же методы, что и get_plugin_data(), но без дополнительных функций. Так как get_file_data() находится в wp-includes/functions.php, нет необходимости включать wp-admin/includes/plugin.php на неадминских экранах.

Хронология изменений

  • С версии 1.5.0: Функция была добавлена.
  • С версии 5.3.0: Добавлена поддержка заголовков Requires at least и Requires PHP.
  • С версии 5.8.0: Добавлена поддержка заголовка Update URI.
  • С версии 6.5.0: Добавлена поддержка заголовка Requires Plugins.

Код функции GET_PLUGIN_DATA()

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

    $default_headers = array(
        'Name'            => 'Название плагина',
        'PluginURI'       => 'Ссылка на плагин',
        'Version'         => 'Версия',
        'Description'     => 'Описание',
        'Author'          => 'Автор',
        'AuthorURI'       => 'Ссылка на автора',
        'TextDomain'      => 'Текстовый домен',
        'DomainPath'      => 'Путь к домену',
        'Network'         => 'Сеть',
        'RequiresWP'      => 'Требуется версия',
        'RequiresPHP'     => 'Требуется PHP',
        'UpdateURI'       => 'Ссылка на обновления',
        'RequiresPlugins' => 'Требуются плагины',
        '_sitewide'       => 'Только для сайта',
    );

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

    // "Только для сайта" - это устаревший заголовок для "Сети".
    if ( ! $plugin_data['Network'] && $plugin_data['_sitewide'] ) {
        _deprecated_argument( __FUNCTION__, '3.0.0', sprintf( __( 'Устаревший заголовок %1$s. Используйте %2$s вместо него.' ), 'Сеть: true', 'Сеть: true' ) );
        $plugin_data['Network'] = $plugin_data['_sitewide'];
    }
    $plugin_data['Network'] = ( 'true' === strtolower( $plugin_data['Network'] ) );
    unset( $plugin_data['_sitewide'] );

    // Если текстовый домен не определён, используем слаг плагина.
    if ( ! $plugin_data['TextDomain'] ) {
        $plugin_slug = dirname( plugin_basename( $plugin_file ) );
        if ( '.' !== $plugin_slug && ! str_contains( $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;
}

Это вся информация о функции GET_PLUGIN_DATA() в WordPress. Надеемся, она будет полезной для вас!

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *