WordPress插件中调用JavaScript文件的函数无法工作,求解决方法
WordPress插件中调用JavaScript文件的函数无法工作,求解决方法
嘿,我来帮你排查一下这个问题!你遇到的情况在WordPress插件开发里挺常见的,咱们一步步梳理可能的原因和解决办法:
先搞定最容易踩坑的路径问题
你的PHP文件放在了插件的/admin/子目录里,这时候用plugin_dir_url(__FILE__)拿到的是/admin/目录的URL,而如果你的js/roomzeroadmin.js是在插件根目录下的话,路径就会错成admin/js/roomzeroadmin.js,自然找不到文件。修正方法有两种:
- 用
dirname(__FILE__)回到插件根目录:function roomzero_load_admin_scripts() { // 回到插件根目录再拼接js路径 $script_url = plugin_dir_url(dirname(__FILE__)) . 'js/roomzeroadmin.js'; wp_enqueue_script( 'roomzero-admin-script', $script_url, array('jquery'), '1.0.0', true ); } add_action('admin_enqueue_scripts', 'roomzero_load_admin_scripts'); - 用
plugins_url配合相对路径跳转:function roomzero_load_admin_scripts() { wp_enqueue_script( 'roomzero-admin-script', plugins_url('../js/roomzeroadmin.js', __FILE__), // ../跳回上一级目录 array('jquery'), '1.0.0', true ); } add_action('admin_enqueue_scripts', 'roomzero_load_admin_scripts');
- 用
确认钩子用对了
你第二个方法用的wp_enqueue_scripts是前台页面的脚本加载钩子,后台页面根本不会触发这个钩子,所以肯定没用。第一个用的admin_enqueue_scripts才是专门给后台加载脚本的正确钩子,就用这个就行。排查缓存和错误提示
- 按
Ctrl+F5强制刷新后台页面,避免浏览器缓存旧的页面资源; - 打开浏览器开发者工具(按F12),切换到「Console」标签,看看有没有404错误(路径错了会显示),或者其他JS报错信息;
- 也可以在后台页面右键查看源码,搜索你的脚本标识
roomzero-admin-script,看看有没有生成对应的<script>标签。
- 按
额外检查点
- 确认你的插件已经在WordPress后台激活了;
- 检查
roomzeroadmin.js文件的权限,一般设为644就可以,权限不对会导致服务器拒绝访问; - 如果有其他插件或主题也在操作后台脚本,可能存在冲突,可以暂时禁用其他插件测试一下。
备注:内容来源于stack exchange,提问作者Luzzi98
相关产品推荐
相关产品推荐

