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

9 окт. 2013 г., 12:17:59
Просмотры: 23K
Голосов: 9

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

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

У меня получилось сделать это работающим используя:

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

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

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

0
Все ответы на вопрос 2
2
19

Возможно, вы ищете:

WP_PLUGIN_DIR  // полный путь, без завершающего слеша
WP_PLUGIN_URL  // полный URL, без завершающего слеша

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

9 окт. 2013 г. 12:25:37
Комментарии

Имейте в виду, что существуют фильтры, которые могут переместить расположение в другое место. Это, возможно, лучший вариант, но точно не является гарантированным решением.

kaiser kaiser
9 окт. 2013 г. 14:15:15

В связанной документации сказано следующее о константах: «Они не должны использоваться напрямую в плагинах или темах, но перечислены здесь для полноты картины.» Поэтому, вероятно, не стоит предлагать их в качестве решения, когда рекомендация заключается в том, чтобы не использовать их в вашей теме.

Gchtr Gchtr
30 мар. 2018 г. 12:59:56
3
11

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

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

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

9 окт. 2013 г. 18:00:00
Комментарии

Это самый корректный метод, и он должен быть лучшим ответом.

CGeorges CGeorges
16 мар. 2016 г. 01:06:03

а как насчёт плагинов, входящих в состав тем?

brett brett
3 янв. 2019 г. 18:18:38

... а затем используйте untrailingslashit( get_home_path() ) . $path['path'] для получения полного серверного пути.

squarecandy squarecandy
16 авг. 2021 г. 05:06:07