我试图只获取当前活动主题的加载样式和脚本。我使用preg\\u match来挑选主题的脚本文件名。如果找到匹配项,那么只需回显这些文件名的句柄,这样我就可以将它们出列/注销。
但preg\\u比赛不起作用。我正在尝试将当前主题url($currthemeurl)与脚本的文件名url($filenames)部分匹配。请注意我的评论。
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;
}
}
最合适的回答,由SO网友:Jacob Peattie 整理而成
的第一个参数preg_match
应该是一个模式,而不是一个字符串,所以它可能没有按照您期望的方式进行比较。使用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()
返回匹配的起始位置(如果有)。与比较
===
到
0
确保脚本URL和主题URL从一开始就匹配,这是您想要的,因为它们都以
http://mydomain/wp-content/themes/mytheme
.