棘手的是要知道某个特定的脚本或样式是否由主题排队。
主题和插件都使用相同的挂钩和函数,因此它们没有以任何方式明确标记为属于特定主题或插件。这意味着知道脚本或样式是否来自主题的唯一方法是检查URL,以查看脚本/样式的URL是否指向主题目录中的某个位置。
一种方法是循环$wp_scripts->registered
和$wp_styles->registered
, 并检查每个脚本和样式的URLget_theme_root_uri()
它告诉您主题文件夹的URL。如果脚本/样式似乎位于该文件夹内,则可以将其出列:
function wpse_340767_dequeue_theme_assets() {
$wp_scripts = wp_scripts();
$wp_styles = wp_styles();
$themes_uri = get_theme_root_uri();
foreach ( $wp_scripts->registered as $wp_script ) {
if ( strpos( $wp_script->src, $themes_uri ) !== false ) {
wp_deregister_script( $wp_script->handle );
}
}
foreach ( $wp_styles->registered as $wp_style ) {
if ( strpos( $wp_style->src, $themes_uri ) !== false ) {
wp_deregister_style( $wp_style->handle );
}
}
}
add_action( \'wp_enqueue_scripts\', \'wpse_340767_dequeue_theme_assets\', 999 );
只有当样式表或脚本位于主题内时,这才有效。如果主题是将来自CDN的脚本或样式排入队列,那么我不确定是否可以将其作为目标。