web-dev-qa-db-fra.com

$ wp_styles-> enregistré ne donne pas TOUS les styles?

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 :(

3
Andrew Newby

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.

1
websupporter