Je suis assez nouveau dans le domaine de la programmation Wordpress (je l'utilise depuis un moment, mais je ne me suis jamais lancé dans les choses sérieuses). J'essaie donc de "minifier" certains fichiers JS/CSS en fichiers communs. Je joins manuellement les fichiers dans common.css et common.js - ce n'est pas un problème (je dois le faire de cette façon, pour corriger les éléments ../ etc dans les fichiers JS/CSS)
Donc, après avoir beaucoup joué, je suis toujours perplexe. J'ai essayé:
$wp_styles->queue
mais tout ce qui fait est imprimer un fichier (même en utilisant print_r )
J'ai alors trouvé cette fonctionnalité:
$wp_styles->registered
qui après un peu de jeu, je suis sorti avec:
foreach ($wp_styles->registered as $val) {
echo "CSS: " . $val->handle . " at " . $val->src . " \n";
}
Donc, ça marche ... MAIS, et voici le mais ... ça n'a pas tout dedans!
<?php
/*
Plugin Name: X Cleanup
Description: Removes unneeded and unwanted stylesheets from other plugins
Version: 0.1
*/
//Use a class to avoid conflicts
class my_load_reducer {
function __construct() {
//Hook into wp_enqueue_scripts with a high priority
add_action( 'wp_loaded', array($this, 'deregister_styles'),99999);
}
function deregister_styles() {
global $wp_scripts;
global $wp_styles;
foreach ($wp_scripts->registered as $val) {
echo "JS: " . $val->handle . " at " . $val->src . " \n";
}
foreach ($wp_styles->registered as $val) {
echo "CSS: " . $val->handle . " at " . $val->src . " \n";
}
}
}
//Instantiate the class
$my_load_reducer = new my_load_reducer();
De ma compréhension, le hook wp_loaded devrait être l’un des derniers à être exécuté (avant son impression et après que tous les plugins aient été exécutés)
Alors ... pourquoi n'y at-il pas tout? Je suis perplexe!
TIA
UPDATE: Comme suggéré, j'ai essayé d'utiliser l'action wp_enqueue_scripts
:
add_action( 'wp_enqueue_scripts', array($this, 'deregister_styles'),99999);
J'exécute ensuite la page et vois mon débogage pour les fichiers CSS comme:
CSS: colors at 1
CSS: wp-admin at /wp-admin/css/wp-admin.min.css
CSS: login at /wp-admin/css/login.min.css
CSS: install at /wp-admin/css/install.min.css
CSS: wp-color-picker at /wp-admin/css/color-picker.min.css
CSS: customize-controls at /wp-admin/css/customize-controls.min.css
CSS: customize-widgets at /wp-admin/css/customize-widgets.min.css
CSS: press-this at /wp-admin/css/press-this.min.css
CSS: ie at /wp-admin/css/ie.min.css
CSS: buttons at /wp-includes/css/buttons.min.css
CSS: dashicons at /wp-includes/css/dashicons.min.css
CSS: open-sans at //fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600&subset=latin,latin-ext
CSS: admin-bar at /wp-includes/css/admin-bar.min.css
CSS: wp-auth-check at /wp-includes/css/wp-auth-check.min.css
CSS: editor-buttons at /wp-includes/css/editor.min.css
CSS: media-views at /wp-includes/css/media-views.min.css
CSS: wp-pointer at /wp-includes/css/wp-pointer.min.css
CSS: imgareaselect at /wp-includes/js/imgareaselect/imgareaselect.css
CSS: wp-jquery-ui-dialog at /wp-includes/css/jquery-ui-dialog.min.css
CSS: mediaelement at /wp-includes/js/mediaelement/mediaelementplayer.min.css
CSS: wp-mediaelement at /wp-includes/js/mediaelement/wp-mediaelement.css
CSS: thickbox at /wp-includes/js/thickbox/thickbox.css
CSS: media at /wp-admin/css/deprecated-media.min.css
CSS: farbtastic at /wp-admin/css/farbtastic.css
CSS: jcrop at /wp-includes/js/jcrop/jquery.Jcrop.min.css
CSS: colors-fresh at
CSS: login-with-ajax at http://steampunk-reviews.com/wp-content/themes/valenti/plugins/login-with-ajax/widget.css
CSS: grunion.css at http://steampunk-reviews.com/wp-content/plugins/jetpack/modules/contact-form/css/grunion.css
CSS: genericons at http://steampunk-reviews.com/wp-content/plugins/jetpack/_inc/genericons/genericons/genericons.css
CSS: jetpack-icons at http://steampunk-reviews.com/wp-content/plugins/jetpack/css/jetpack-icons.min.css
CSS: omnisearch-admin at http://steampunk-reviews.com/wp-content/plugins/jetpack/modules/omnisearch/omnisearch.min.css
CSS: jquery-ui at http://steampunk-reviews.com/wp-content/plugins/contact-form-builder/css/jquery-ui-1.10.3.custom.css
CSS: contact_form_maker_frontend at http://steampunk-reviews.com/wp-content/plugins/contact-form-builder/css/contact_form_maker_frontend.css
CSS: cb-main-stylesheet at http://steampunk-reviews.com/wp-content/themes/valenti/library/css/style.css
CSS: cb-font-stylesheet at //fonts.googleapis.com/css?family=Oswald:400,700,400italic|Open+Sans:400,700,400italic&subset=greek,greek-ext
CSS: fontawesome at http://steampunk-reviews.com/wp-content/themes/valenti/library/css/fontawesome/css/font-awesome.min.css
CSS: cb-ie-only at http://steampunk-reviews.com/wp-content/themes/valenti/library/css/ie.css
..yet toujours pas de mention de celui-ci: /
<link rel='stylesheet' id='maxgalleria-image-tiles-css' href='http://steampunk-reviews.com/wp-content/plugins/maxgalleria/addons/templates/image-tiles/image-tiles.css?ver=4.2.2' type='text/css' media='all' />
Donc, ne semble toujours pas être en cours d'exécution à la fin, comme je l'espérais :(
Tous les scripts et styles inclus par wp_enqueue_script()
ou wp_enqueue_style()
sont affichés dans l'action hook wp_head
ou wp_footer
. Le moment approprié pour les fusionner serait donc là. Accédez très tôt et faites votre magie là-bas.
Le hook wp_enqueue_styles
n'est pas nécessairement le meilleur, car ce n'est pas toujours le hook où les styles sont enregistrés. Donc, il me semble qu’il serait préférable de fusionner les scripts/styles au moment de la sortie, pas l’entrée.