Как получить название текущего плагина?

27 апр. 2015 г., 12:36:05
Просмотры: 17.1K
Голосов: 1

Мне нужно получить название текущего плагина, используя define, например так:

define(PLUGIN_NAME, plugin_basename(dirname(__FILE__)));

К сожалению, этот код не работает, потому что php файл находится во вложенной директории (includes) моего плагина, и он возвращает:

my-plugin/includes

Есть ли какая-то функция в WordPress API для выполнения этой задачи? Заранее спасибо.

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

define(PLUGIN_NAME, "MY PLUGIN NAME"); достаточно. Зачем вам что-то динамическое, если это вообще не динамика.

Mayeenul Islam Mayeenul Islam
27 апр. 2015 г. 12:45:51

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

Tetrahedronix Tetrahedronix
27 апр. 2015 г. 12:54:45

Плагины могут быть установлены только в папку mu или plugins и не могут находиться в поддиректориях, так что вам не о чем беспокоиться.

Pieter Goosen Pieter Goosen
27 апр. 2015 г. 13:14:47

Я имею в виду, что пользователь может установить плагин в папку plugins/theplugins вместо plugins/myplugin

Tetrahedronix Tetrahedronix
27 апр. 2015 г. 13:23:50

Я не понимаю вашу проблему. Перечитайте мой предыдущий комментарий.

Pieter Goosen Pieter Goosen
27 апр. 2015 г. 13:26:14

Если пользователь намеренно добавляет плагин в неправильную папку, это его собственная проблема. Это не должно быть вашей проблемой.

Pieter Goosen Pieter Goosen
27 апр. 2015 г. 13:28:22

Вам следует поместить определение в основной файл плагина myplugin/myplugin.php

TheDeadMedic TheDeadMedic
27 апр. 2015 г. 14:11:55
Показать остальные 2 комментариев
Все ответы на вопрос 3
3
13

В основном PHP-файле плагина:

$plugin_data = get_plugin_data( __FILE__ );
$plugin_name = $plugin_data['Name'];
16 сент. 2016 г. 12:53:50
Комментарии

Кстати, это работает только в админке

Jacob Raccuia Jacob Raccuia
16 янв. 2018 г. 16:38:22

Мне нравится это, но когда я вывожу все ключи и значения ассоциативного массива, только TextDomain возвращает значение: PluginURI = Version = Description = Author = AuthorURI = TextDomain = my-calculator DomainPath = Network = Title = AuthorName =

... как мне установить/получить все остальные значения для #plugin_data ?

TARKUS TARKUS
15 апр. 2018 г. 15:51:44

Убедитесь, что основной комментарий в вашем файле плагина содержит соответствующие данные в соответствии с https://codex.wordpress.org/File_Header

Mark Howells-Mead Mark Howells-Mead
16 апр. 2018 г. 20:35:34
0

вы можете получить название плагина в подкаталоге вашего плагина с помощью этого фрагмента кода:

$plugin = basename( plugin_dir_path(  dirname( __FILE__ , 2 ) ) );

вам нужно только указать уровень подкаталога относительно папки плагина во втором параметре функции dirname().

1 апр. 2018 г. 11:35:29
1

Это позволит вам получить название папки плагина независимо от того, где расположен файл, и без необходимости знать структуру директорий плагина.

$plugin_folder_name = reset(explode('/', str_replace(WP_PLUGIN_DIR . '/', '', __DIR__)));

Разберем, что происходит, по шагам:

// Получаем относительный путь к текущему файлу от корня плагина
$file_path_from_plugin_root = str_replace(WP_PLUGIN_DIR . '/', '', __DIR__);

// Разбиваем путь на массив
$path_array = explode('/', $file_path_from_plugin_root);

// Название папки плагина - первый элемент массива
$plugin_folder_name = reset($path_array);
18 авг. 2021 г. 15:44:39
Комментарии

Одна строка вызывает уведомление "Notice: Only variables should be passed by reference", поэтому я использую более длинный вариант.

popnoodles popnoodles
21 дек. 2021 г. 18:45:19