Obtenha somente estilos enfileirados e scripts do tema atual

4

Estou tentando SOMENTE os estilos e scripts carregados do tema ativo atual. Eu estou usando preg_match para destacar apenas os nomes dos arquivos de script do tema. Se as correspondências forem encontradas, basta ecoar as alças desses nomes de arquivos para que eu possa remover o registro / cancelamento de registro deles.

Mas o preg_match não está funcionando. Eu estou tentando parear parcialmente o url do tema atual ($ currthemeurl) com o nome do arquivo url ($ filenames) do script. Por favor, observe meus comentários comentados.

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;
     }

}
    
por samjco 04.08.2017 / 10:31

1 resposta

2

O primeiro argumento de preg_match deve ser um padrão, não uma string, então provavelmente não está comparando a maneira esperada. Use strpos em vez disso:

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() retorna a posição inicial da correspondência, se houver uma. A comparação com === a 0 garante que o URL do script e o URL do tema correspondam desde o início, que é o que você deseja, pois ambos começarão com http://mydomain/wp-content/themes/mytheme .

    
por Jacob Peattie 04.08.2017 / 10:53