//init global add_action( 'init', 'initialize_script_global' ); function initialize_script_global() { global $mes_scripts; $mes_scripts = array(); } //remplissage de $mes_scripts et vidage de $wp_scripts->queue add_action( 'wp_head', 'je_veux_mes_scripts', 1 ); add_action( 'wp_footer', 'je_veux_mes_scripts', 1 ); function je_veux_mes_scripts() { global $mes_scripts,$wp_scripts; foreach( $wp_scripts->queue as $s ){ $mes_scripts[ $wp_scripts->registered[ $s ]->handle ] = array( 'src' => $wp_scripts->registered[ $s ]->src, // src du script 'deps' => $wp_scripts->registered[ $s ]->deps, // dépendances du script 'extra' => $wp_scripts->registered[ $s ]->extra //données relatives (variables) ); } $wp_scripts->queue = array(); } //tri et impression des scripts add_action( 'wp_footer', 'afficher_moi_tout_ca', 99 ); function afficher_moi_tout_ca() { global $mes_scripts, $wp_scripts; $i = count( $mes_scripts ); $mes_scripts_ordonnes = array(); $souvenir_de_mes_scripts = $mes_scripts; //la boucle infinie et le foreach sur la globale while( $i > 0 ){ foreach( $mes_scripts as $k => $s ){ if( empty( $s[ 'deps' ] ) ){ $mes_scripts_ordonnes[ $k ] = $s; unset( $mes_scripts[ $k ] ); $i--; }else{ $alldepscounter = 0; //nombre de conditions remplies foreach( $s[ 'deps' ] as $d ){ if( ! array_key_exists( $d, $souvenir_de_mes_scripts ) ) { //je n'aurais jamais ma dépendance... if( isset( $wp_scripts->registered[ $d ] ) ) { //... à moins qu'il y ai un script ? $mes_scripts[ $wp_scripts->registered[ $d ]->handle ] = array( 'src' => $wp_scripts->registered[ $d ]->src, 'deps' => $wp_scripts->registered[ $d ]->deps, 'extra' => $wp_scripts->registered[ $d ]->extra); $souvenir_de_mes_scripts[ $wp_scripts->registered[ $d ]->handle ] = $mes_scripts[ $wp_scripts->registered[ $d ]->handle ]; }else{ //retourne dans ton monde, créature démoniaque... unset( $mes_scripts[ $k ]); $i--; break; } }else{ if( array_key_exists( $d, $mes_scripts_ordonnes ) ) { // je rempli une condition en + $alldepscounter++; } } } if( $alldepscounter == count( $s[ 'deps' ] ) ) { //bravo, toutes les conditions sont remplies $mes_scripts_ordonnes[ $k ] = $s; unset( $mes_scripts[ $k ] ); $i--; } } } } //print this if( ! empty( $mes_scripts_ordonnes ) ) { $output = '' . "\n"; $output.= ''; echo $output; } }