You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress插件admin_enqueue_scripts未加载JS脚本求助

问题排查与解决方案

首先看代码里的核心拼写错误:你注册脚本用的ID是zhngrupa-script,但入队和本地化用的是zhngroup-script(少了一个字母a),这会导致WordPress找不到对应的注册脚本,直接跳过入队操作——这大概率是生产环境失效的关键原因。

1. 修复脚本ID不匹配问题

把注册、入队、本地化的ID统一,修改代码如下:

public function zhngrupa_enqueue_scripts() {
    // 获取订单ID
    $order_id = $this->order_id;

    // 如果订单ID仍为0,则终止流程
    if ($order_id === 0) {
        return;
    }

    // 统一脚本ID,修正版本号参数(原代码第四个参数用true不规范)
    wp_register_script( 
        'zhngrupa-script', 
        'https://smiel.pl/wp-content/uploads/2023/06/zhngrupa_send_message_button_script.js', 
        array('jquery'), 
        '1.0', // 替换为你的脚本版本号,或用filemtime()自动更新缓存
        true 
    );
    wp_enqueue_script( 'zhngrupa-script' );

    // 向JavaScript传递数据,使用统一的脚本ID
    wp_localize_script('zhngrupa-script', 'zhngroupScriptParams', array(
        'nonce' => wp_create_nonce('zhngrupa_expired_service_nonce'),
        'order_id' => $order_id,
    ));
}

2. 排查生产环境订单ID获取问题

生产环境中$this->order_id可能没有正确赋值,导致提前触发return终止脚本加载。可以临时添加日志排查:

public function zhngrupa_enqueue_scripts() {
    // 日志输出到服务器错误日志,生产环境可安全使用
    error_log('ZHNGrupa: 当前订单ID = ' . $this->order_id);

    $order_id = $this->order_id;
    if ($order_id === 0) {
        error_log('ZHNGrupa: 订单ID为0,终止脚本加载');
        return;
    }
    // 后续代码...
}

然后查看服务器的PHP错误日志,确认订单ID是否正常获取。

3. 清理生产环境缓存

生产环境的缓存机制常导致代码更新不生效:

  • 清空所有缓存插件(如WP Rocket、W3 Total Cache)的缓存
  • 刷新服务器对象缓存(如Redis、Memcached)
  • 检查是否有后台页面缓存规则,禁用后台页面缓存

4. 验证JS文件可用性

  • 直接在浏览器访问JS文件URL,确认能正常加载内容
  • 检查服务器上该文件的权限:设置为644,所在文件夹权限设为755
  • 若使用CDN,刷新CDN缓存,确认文件已被正确同步

5. 调整钩子优先级

若生产环境有其他插件/主题修改了admin_enqueue_scripts的执行顺序,可提高你的钩子优先级:

// 在__construct中修改钩子注册,增加优先级参数(数值越大越晚执行)
add_action('admin_enqueue_scripts', array($this, 'zhngrupa_enqueue_scripts'), 100);

内容的提问来源于stack exchange,提问作者Jacek Śmiel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:22:38