Obter diretório de plugins a partir de um tema

8

Alguém conhece uma maneira não-hacky de obter o caminho do diretório do plug-in dentro do functions.php de um tema?

Eu usei plugin_dir_path ( FILE ), mas como é chamado nas funções.php do tema, ele retorna o caminho para esse arquivo. Não é o diretório de plugins. Eu poderia manipulá-lo com string e adicionar o caminho dos plugins, mas isso parece quase tão ruim quanto codificar o caminho inteiro.

Eu tenho que trabalhar usando:

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

Mas eu sei que isso é tão antiquado e errado e eu provavelmente seria evitado da comunidade wordpress por usá-lo!

Existe uma função wordpress padrão que eu possa usar para isso?

Dan Brown
fonte

Respostas:

18

Talvez o que você está procurando seja:

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

Ver documentação

JMau
fonte
1
Lembre-se de que existem filtros que podem mover o local para outro lugar. Essa pode ser a melhor aposta, mas certamente não é uma suposição de salvamento.
Kaiser #
2
A documentação vinculada diz o seguinte sobre as constantes: «Elas não devem ser usadas diretamente por plugins ou temas, mas estão listadas aqui para fins de integridade.» Portanto, provavelmente não deve ser sugerida como a solução, quando o conselho é não usá-las no seu tema.
Gchtr 30/03/19
8

Acredito que isso possa ser mais confiável do que depender das constantes.

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

A razão pela qual suspeito que possa ser mais confiável é que a plugins_urlfunção considera WPMU_PLUGIN_URLas WP_PLUGIN_URLconstantes e as e também respeitará o plugins_urlfiltro.

s_ha_dum
fonte
1
Este é o método mais não-hacky e deve ser a melhor resposta.
CGeorges
e os plugins contidos nos temas?
Brett