WordPress 6.1.1中wp_dequeue_script无效,如何移除核心自定义JS和CSS?
WordPress 6.1.1 中取消核心脚本队列失效的原因及解决办法
问题原因
WordPress 6.1.1 对脚本加载的时机逻辑做了调整,wp_print_scripts 钩子如今主要用于脚本输出阶段的操作,而核心脚本(比如 jquery-ui-core)的入队操作通常在更早的 wp_enqueue_scripts 钩子中完成。如果仍然用 wp_print_scripts 执行取消队列,时机上已经滞后,导致无法生效。
修正方案
改用 wp_enqueue_scripts 钩子,并设置足够高的优先级(确保高于目标脚本入队的默认优先级),同时可以先判断脚本是否已入队,避免无效操作:
function wpdocs_dequeue_script() { // 先确认脚本确实处于入队状态 if ( wp_script_is( 'jquery-ui-core', 'enqueued' ) ) { wp_dequeue_script( 'jquery-ui-core' ); // 若需要彻底移除脚本注册(防止其他地方重新入队),可加上下面一行 // wp_deregister_script( 'jquery-ui-core' ); } } // 优先级设为200,确保在默认入队操作之后执行 add_action( 'wp_enqueue_scripts', 'wpdocs_dequeue_script', 200 );
如果是要在后台(wp-admin)移除该脚本,需要把钩子换成 admin_enqueue_scripts,逻辑保持一致:
function wpdocs_dequeue_admin_script() { if ( wp_script_is( 'jquery-ui-core', 'enqueued' ) ) { wp_dequeue_script( 'jquery-ui-core' ); } } add_action( 'admin_enqueue_scripts', 'wpdocs_dequeue_admin_script', 200 );
额外说明
- 部分主题或插件可能会通过依赖关系间接加载
jquery-ui-core,这种情况下仅取消队列可能不够,需要排查依赖链,或者直接注销脚本(即上面代码中注释的wp_deregister_script语句)。 - 测试时建议开启 WP_DEBUG 模式,方便排查脚本加载的相关日志,确认目标脚本的入队时机和依赖情况。
内容的提问来源于stack exchange,提问作者user19540948
相关产品推荐
相关产品推荐

