如何在WordPress后台取消加载或注销指定WooCommerce脚本
问题原因
之前的代码不生效有两个核心问题:
- 钩子名拼写错误:WordPress 后台脚本打印相关的正确钩子是
admin_print_scripts(末尾为复数s),你写的admin_print_script是不存在的无效钩子,绑定的函数根本不会触发执行 - 执行优先级不对:WooCommerce 注册
wc-admin-order-meta-boxes-js脚本的时机较晚,你设置优先级为1时,该脚本还没完成注册流程,此时执行注销、出队操作自然没有效果
可用代码方案
仅在订单编辑页移除(推荐)
只在WooCommerce的shop_order订单编辑页面移除该脚本,不影响其他后台页面功能,代码如下:
add_action( 'admin_print_scripts', 'unload_wc_order_meta_boxes_js', 999 ); function unload_wc_order_meta_boxes_js() { $screen = get_current_screen(); // 匹配订单编辑页面 if ( $screen && property_exists($screen, 'id') && $screen->id === 'shop_order' ) { wp_dequeue_script( 'wc-admin-order-meta-boxes-js' ); wp_deregister_script( 'wc-admin-order-meta-boxes-js' ); } }
全后台页面移除
如果需要在所有后台管理页面都禁止加载该脚本,去掉页面判断逻辑即可:
add_action( 'admin_print_scripts', 'unload_wc_order_meta_boxes_js_all_admin', 999 ); function unload_wc_order_meta_boxes_js_all_admin() { wp_dequeue_script( 'wc-admin-order-meta-boxes-js' ); wp_deregister_script( 'wc-admin-order-meta-boxes-js' ); }
注意:如果设置999优先级仍然无法移除,可以把优先级数值调大到9999,保证移除操作在WooCommerce完成脚本注册之后执行即可。
内容的提问来源于stack exchange,提问作者bld23232
相关产品推荐
相关产品推荐

