Wordpress charge toutes les ressources clientes de tous les plugins, pas seulement le plugin d’intérêt. Il peut sembler judicieux de charger jqery globalement, mais cela n’a aucun sens de charger tous les autres plugins Javascript dans un plugin back-end.
Maintenant, comment puis-je éviter que Wordpress charge les ressources d'autres plugins?
Il y a wp_dequeue mais je ne suis pas sûr qu'il y ait un autre rappel à la fin du chargement de tous les plugins, je peux donc le nettoyer tout à fait moi-même. Je suis actuellement intéressé par le filtrage des ressources de plug-in back-end uniquement.
ps: je suis vraiment coincé à cela et je suis vraiment très surpris que cela semble être conçu comme ça, je veux dire, wp_enque va bien mais WP ne se soucie pas de ce que c'est, alors vous devez faites tout le travail des jambes vous-même. Imaginez simplement plus de 2 applications différentes basées sur Dojo/CommonJS/Require-JS avec leurs propres configurations et versions en cours de chargement: problème non-stop, c'est ce à quoi je suis confronté maintenant.
merci, toute idée est la bienvenue.
Vous pouvez essayer d’interroger wp_head et wp_footer pour voir ce qu’ils contiennent, mais malheureusement, cela ratera le code dur de certains auteurs. Fondamentalement, ce que je fais est wp_dequeue/wp_deregister en fonction de ce que je vois être chargé dans la source, dans les journaux des erreurs ou même simplement dans chacun des plugins installés pour voir ce qui est appelé. Je trouve plus facile de télécharger des sites de production sur mon environnement de développement local. En utilisant Notepad ++, je clique ensuite sur Rechercher -> Rechercher dans tous les fichiers -> Spécifiez le répertoire des plugins (ou les thèmes) de mon environnement de développement local et recherchez des modèles tels que wp_enqueue
voire *.js
et ainsi de suite, car j’obtiens une meilleure image et ce qui peut être chargé. Je fais ensuite les changements nécessaires sur l'environnement en direct.
Si vous identifiez des scripts que vous ne voulez pas, ajoutez-les à une fonction qui ressemble à ceci dans le fichier function.php de votre thème:
function wp_getridofscript() {
wp_dequeue_script( 'jquery-ui-core' );
wp_deregister_script( 'jquery-ui-core' );
}
add_action( 'wp_print_scripts', 'wp_getridofscript', 100 );
Vous pouvez en avoir autant que vous voulez et n'avez pas besoin de vous soucier d'écrire une fonction distincte pour chacun. C'EST À DIRE:
function wp_getridofscript() {
wp_dequeue_script( 'jquery' );
wp_deregister_script( 'jquery' );
wp_dequeue_script( 'jquery-ui-core' );
wp_deregister_script( 'jquery-ui-core' );
}
add_action( 'wp_print_scripts', 'wp_getridofscript', 100 );
Cela pose toujours un problème lorsque vous utilisez un plug-in qui charge des fichiers css/js supplémentaires. Vous pouvez ajouter des champs personnalisés aux pages où vous souhaitez exclure les fichiers css et js (appelés quelque chose comme page_exclude_css et _js), avec des gestionnaires de style et de script séparés par des virgules. Ensuite, vous ajoutez une fonction aux crochets wp_enqueue (à une position telle que 9999) qui met tous ces gestionnaires en file d'attente.
Étant donné qu’aucun nom de descripteur n’est attribué par un référentiel central, il est impossible aux plug-in d’éviter de créer leurs propres noms de descripteur. Même s’il existait un référentiel central, certains plug-in devront utiliser la version 3 d’une bibliothèque JS, tandis que d’autres version 4 (ce qui m'est arrivé avec la bibliothèque select2), un schéma de nommage simple pourrait ne pas suffire, même s'il en existait un.
Le résultat final de cette situation est que toute tentative de solution sera une solution ad hoc et ne constituera pas un "futur prof". Si vous possédez un site, vous pouvez au moins voir quels plug-ins les mettent en file d'attente et les retirer de la file d'attente. Si vous écrivez un thème ou un plug-in, vous n'avez rien d'autre à faire que d'essayer de tester des thèmes et des plug-ins populaires et d'ajuster votre code en fonction de la quantité d'intégration sans heurts que vous voulez avec eux.