Получить директорию плагина из темы
Кто-нибудь знает нехакерский способ получения пути к директории плагина из файла functions.php темы?
Я использовал plugin_dir_path(FILE), но поскольку он вызывается в файле functions.php темы, он возвращает путь к этому файлу, а не к директории плагинов. Я мог бы манипулировать строкой и добавить путь к плагинам, но это кажется почти таким же плохим решением, как жесткое кодирование всего пути.
У меня получилось сделать это работающим используя:
require_once( ABSPATH .'/wp-content/plugins/ehu-events/event-widget.php' );
Но я знаю, что это очень устаревший и неправильный подход, и меня, вероятно, осудит сообщество WordPress за его использование!
Есть ли стандартная функция WordPress, которую я могу использовать для этого?

Возможно, вы ищете:
WP_PLUGIN_DIR // полный путь, без завершающего слеша
WP_PLUGIN_URL // полный URL, без завершающего слеша
Смотрите документацию

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

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

Я считаю, что этот способ может быть более надежным, чем зависимость от констант.
$url = plugins_url();
$path = parse_url($url);
var_dump($path['path']);
Причина, по которой я предполагаю, что это может быть надежнее, заключается в том, что функция plugins_url
учитывает обе константы WPMU_PLUGIN_URL
и WP_PLUGIN_URL
, а также учитывает фильтр plugins_url
.
