Получить каталог плагинов из темы

8

Кто-нибудь знает нехакерский способ получения пути к каталогу плагина из файла functions.php темы?

Я использовал plugin_dir_path ( FILE ), но поскольку он вызывается в файле functions.php темы, он возвращает путь к этому файлу. Не каталог плагинов. Я мог бы обработать строку и добавить путь к плагинам, но это почти так же плохо, как жесткое программирование всего пути.

У меня это работает, используя:

require_once( ABSPATH .'/wp-content/plugins/ehu-events/event-widget.php' );

Но я знаю, что это настолько старая школа и неправильно, и я, вероятно, буду избегать сообщества WordPress за его использование!

Есть ли стандартная функция WordPress, которую я могу использовать для этого?

Дэн Браун
источник

Ответы:

18

Может быть, то, что вы ищете, это:

WP_PLUGIN_DIR  // full path, no trailing slash
WP_PLUGIN_URL  // full url, no trailing slash

Смотри документацию

JMau
источник
1
Имейте в виду, что есть фильтры, которые могут перемещать местоположение в другое место. Это может быть лучшим выбором, но это, конечно, не предположение о сохранении.
Кайзер
2
В связанной документации сказано следующее о константах: «Они не должны использоваться непосредственно плагинами или темами, но перечислены здесь для полноты». Так что, вероятно, не следует предлагать в качестве решения, когда совет не использовать их в своей теме.
Гхтр
8

Я считаю, что это может быть более надежным, чем в зависимости от констант.

$url = plugins_url();
$path = parse_url($url);
var_dump($path['path']);

Поэтому я подозреваю , что это может быть более надежным является то , что plugins_urlфункция рассматривает оба WPMU_PLUGIN_URLи те WP_PLUGIN_URLконстанты , а также будет уважать plugins_urlфильтр.

s_ha_dum
источник
1
Это самый небрежный метод, и он должен быть лучшим ответом.
CGeorges
как насчет плагинов, содержащихся в темах?
Бретт