web-dev-qa-db-fra.com

Obtenir un chemin vers un autre plugin

Pour obtenir le chemin d'accès à un plugin, vous pouvez utiliser plugin_dir_path(__FILE__) - mais ceci doit évidemment être appelé depuis le plug-in.

Comment pouvez-vous de manière fiable obtenir le chemin du plugin B (pluginb/pluginb.php) depuis le plug-in A?

Edit: On suppose que vous connaissez le slug du plug-in que vous recherchez (en fait, vous pouvez les obtenir à partir de get_plugins()). Mais j'aimerais que cela fonctionne en général.

10
Stephen Harris

Ma meilleure hypothèse serait:

if ( ! is_file( $dir = WPMU_PLUGIN_DIR . '/pluginb/pluginb.php' ) ) {
    if ( ! is_file( $dir = WP_PLUGIN_DIR . '/pluginb/pluginb.php' ) )
        $dir = null;
}

return $dir;

Cependant, le danger réside toujours dans l'hypothèse du "nom de base" du plugin - un plugin bien écrit fonctionnera toujours même si son répertoire et/ou son fichier principal ont été renommés (pour une raison quelconque).

Ce qui remonte à mon commentaire initial - dépendant de auquel plugin tiers faisant référence, de nombreux auteurs définissent leurs propres méthodes/constantes pour tenir le chemin du plugin - il serait logique de vérifier leur existence et de les utiliser à la place (si disponible).

9
TheDeadMedic

Une méthode consiste donc à appeler plugin_dir_path() dans le plug-in actuel et à remplacer votre propre nom de répertoire de plug-in par celui du slug du plug-in que vous recherchez (pluginb/pluginb.php):

Donc, dans notre plug-in plugina/plugina.php,

$plugin_b = str_replace('plugina/','pluginb/pluginb.php',plugin_dir_path(__FILE__));
echo $plugin_b; //Prints path/to/pluginb/pluginb.php';
2
Stephen Harris

Utilisez WP_PLUGIN_DIR constante dans votre pluginA, par exemple:

include_once(WP_PLUGIN_DIR.'/pluginb/pluginb.php');

Informations supplémentaires: https://codex.wordpress.org/Determining_Plugin_and_Content_Directories

0
Harkály Gergő