Récupérer le répertoire des plugins à partir d'un thème

8

Est-ce que quelqu'un connaît un moyen non-hacky d'obtenir le chemin du répertoire du plugin depuis le fichier functions.php d'un thème?

J'ai utilisé plugin_dir_path ( FILE ), mais parce qu'il est appelé dans le fichier functions.php du thème, il renvoie le chemin d'accès à ce fichier. Pas le répertoire des plugins. Je pourrais manipuler une chaîne et ajouter le chemin des plugins, mais c'est presque aussi mauvais que de coder en dur tout le chemin.

Je l'ai fait fonctionner en utilisant:

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

Mais je sais que c'est tellement oldschool et mal et je serais probablement évité de la communauté wordpress pour l'utiliser!

Existe-t-il une fonction wordpress standard que je peux utiliser pour cela?

danbrown
la source

Réponses:

18

Peut-être que ce que vous recherchez est:

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

Voir documentation

JMau
la source
1
Gardez à l'esprit qu'il existe des filtres qui pourraient déplacer l'emplacement ailleurs. C'est peut-être le meilleur pari, mais ce n'est sûrement pas une hypothèse de sauvegarde.
kaiser
2
La documentation liée dit ce qui suit sur les constantes: «Celles-ci ne doivent pas être utilisées directement par les plugins ou les thèmes, mais sont listées ici pour être complètes.» Il ne devrait donc probablement pas être suggéré comme solution, lorsque le conseil est de ne pas les utiliser dans votre thème.
Gchtr
8

Je pense que cela peut être plus fiable qu'en fonction des constantes.

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

La raison pour laquelle je soupçonne qu'elle peut être plus fiable est que la plugins_urlfonction prend en compte à la fois WPMU_PLUGIN_URLles WP_PLUGIN_URLconstantes et les et respectera également le plugins_urlfiltre.

s_ha_dum
la source
1
C'est la méthode la plus non hacky et ce devrait être la meilleure réponse.
CGeorges
qu'en est-il des plugins contenus dans les thèmes?
brett