Obtenha apenas estilos e scripts emqueados do tema atual

Estou tentando obter SOMENTE os estilos carregados e os scripts do tema ativo atual. Estou usando preg_match para selecionar apenas os nomes dos arquivos do script do tema. Se forem encontradas correspondências, basta ecoar as alças desses nomes de arquivos para que eu possa desativá-los / desregitá-los.

Mas o preg_match não está funcionando. Estou tentando combinar parcialmente o url do tema atual ($ currthemeurl) com o URL do nome do arquivo ($ nomes de arquivos) do script. 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; } } 

Solutions Collecting From Web of "Obtenha apenas estilos e scripts emqueados do tema atual"

O primeiro argumento de preg_match é suposto ser um padrão, não uma string, então provavelmente não está comparando a maneira que você espera. Use em vez disso strpos :

 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 partida, se houver uma. Comparando com === para 0 garante que o URL do script e o URL do tema coincidem desde o início, que é o que você deseja, pois ambos começarão com http://mydomain/wp-content/themes/mytheme .