web-dev-qa-db-fra.com

Obtenir uniquement les styles et les scripts en file d'attente du thème actuel

J'essaie d'obtenir SEULEMENT les styles et scripts chargés du thème actif actuel. J'utilise preg_match pour ne nommer que les noms de fichiers de script du thème. Si des correspondances sont trouvées, faites simplement écho aux poignées de ces noms de fichiers pour que je puisse les retirer/les désenregistrer.

Mais le preg_match ne fonctionne pas. J'essaie de faire correspondre partiellement l'url du thème actuel ($ currthemeurl) au nom de fichier url ($ noms de fichiers) du script. S'il vous plaît noter mes commentaires commentés.

function remove_theme_scripts() {

    global $wp_scripts;

    $currthemeurl = get_stylesheet_directory_uri(); 
    //Shows http://mydomain/wp-content/themes/mytheme

    foreach( $wp_scripts->queue as $handle ){

             $obj = $wp_scripts->registered [$handle];
             $handles = $obj->handle;  //something.js
             $filenames = $obj->src; //SHOWS http://mydomain/wp-content/themes/mytheme/js/something.js

            if (preg_match($currthemeurl, $filenames)):
             //MATCH FOUND

             echo $handles;
            else:
             echo "NOTHING Match";
            endif;
     }

}
5
samjco

Le premier argument de preg_match est supposé être un motif, pas une chaîne, donc il ne compare probablement pas comme vous le souhaitez. Utilisez strpos à la place:

function wpse_275760_theme_scripts() {
    global $wp_scripts;

    $stylesheet_uri = get_stylesheet_directory_uri();

    foreach( $wp_scripts->queue as $handle ) {
        $obj = $wp_scripts->registered[$handle];
        $obj_handle = $obj->handle;
        $obj_uri = $obj->src;

        if ( strpos( $obj_uri, $stylesheet_uri ) === 0 )  {
            echo $obj_handle;
        } else {
            echo 'NOTHING Match';
        }
    }
}

strpos() renvoie la position de départ du match, le cas échéant. La comparaison avec === et 0 garantit que l'URL de script et l'URL du thème correspondent dès le début, comme vous le souhaitez, car elles commenceront toutes les deux par http://mydomain/wp-content/themes/mytheme.

3
Jacob Peattie