Dans quel ordre les plugins sont-ils chargés dans WordPress?
Et dans le dossier d'un plugin particulier, quel ordre est suivi pour le chargement?
Dans quel ordre les plugins sont-ils chargés dans WordPress?
Et dans le dossier d'un plugin particulier, quel ordre est suivi pour le chargement?
Réponses:
Dans wp-settings.php
, WordPress vérifie d'abord les plug-ins indispensables (plug-ins dans le mu-plugins
dossier facultatif ) et les charge.
Ensuite, si vous exécutez une installation multisite, il recherche les plugins activés par le réseau et les charge.
Ensuite, il vérifie tous les autres plugins actifs en regardant l' active_plugins
entrée de la wp_options
table de base de données et les parcourt. Les plugins seront répertoriés par ordre alphabétique.
Voici l'ordre dans lequel WordPress charge à peu près tout: http://codex.wordpress.org/Action_Reference#Actions_Run_During_a_Typical_Request
Le fait est que peu importe l'ordre dans lequel chaque plugin est chargé, car les plugins correctement écrits utiliseront des crochets WordPress, qui vous permettront de brancher des fonctionnalités à des points spécifiques plus tard dans le démarrage de WordPress. (Les plugins correctement écrits préfixeront également leurs fonctions et classes afin qu'il n'y ait pas de conflits.)
Plus d'informations sur l'API de plugin: http://codex.wordpress.org/Plugin_API/
Dépend totalement du plugin. WordPress ne charge qu'un seul fichier dans le plugin, celui qui est généralement nommé the-plugin-name.php
et contient le titre, la description, l'auteur, etc. en haut. C'est au plugin de charger le reste de ses fichiers, en utilisant require_once
et wp_enqueue_script
et ainsi de suite.
apply_filters()
pour créer un hook, mais s'exécute avant un plugin qui utilise add_filter()
, cela fonctionnera-t-il toujours? Logiquement, il semble que apply_filters()
ce soit déjà fait, donc les add_filter()
appels dans le second plugin ne feront rien. Est-il important dans quel ordre les plugins se chargent lorsque vous utilisez uniquement des hooks créés par plugin?
apply_filters()
. add_filter()
doit fonctionner avant apply_filters()
. S'il se add_filter()
trouve dans un fichier de plugin et non dans une autre fonction, il s'exécutera sur le plugins_loaded
hook, ce qui se produira généralement avant que vous en ayez besoin apply_filters()
.
the_content
- comment l'ordre de leur apparence est-il déterminé?
Je trouve qu'il est utile d'inclure une action de «chargement tardif» dans mon plugin qui s'exécute après que tous les plugins ont terminé leur chargement comme ceci:
add_action('plugins_loaded', 'my_late_loader');
La fonction my_late_loader est alors lancée après tous les autres plugins ce qui me permet d'utiliser des hooks définis par d'autres plugins dans ma propre fonction my_other_function qui est lancée dans my_late_loader
/**
* Late loading function for actions that must run after all plugins
* have loaded
*/
function my_late_loader(){
add_action( 'some_hook', 'my_other_function', 10, 1);
}
Peu compliqué (je sais), mais cela garantit que les crochets dans d'autres plugins sont créés avant d'être ajoutés quel que soit l'ordre de chargement du plugin.