晴空的code 2025-02-12 00:08 采纳率: 73.2%
浏览 9

我想要在管理员后台引入脚本和样式文件,样式文件成功引入了,控制台也没有报错没有任何输出,我尝试引入其它的脚本发现也无法引入,如何解决?(关键词-file)


function moyun_admin_scripts($hook)
{
    // 调试输出
    error_log('Current hook: ' . $hook);



    // 只在主题设置页面加载
    if ('appearance_page_moyun-settings' !== $hook) {
        return;
    }

    // 引入样式
    wp_enqueue_style(
        'theme-settings',
        get_template_directory_uri() . '/assets/css/admin-theme-setting.css',
        array(),
        '1.0'  
    );

    $file_path = get_template_directory() . '/assets/js/theme-settings.js';
    if (!file_exists($file_path)) {
        error_log('theme-settings.js 文件不存在: ' . $file_path);
    }

    // 引入主题设置脚本
    wp_enqueue_script(
        'moyun-admin-settings',
        get_template_directory_uri() . '/assets/js/theme-settings.js',
        array('jquery'),
        '1.0',  
        true
    );
}


// 添加新的钩子
add_action('admin_enqueue_scripts', 'moyun_admin_scripts');

我想要在管理员后台引入脚本和样式文件,样式文件成功引入了,但是脚本却没有被引入,控制台也没有报错没有任何输出,我尝试引入其它的脚本发现也无法引入,但是在前台却能引入。这个是什么原因。文件的地址也没有错误。难道是我的写法有问题吗。使用开发者工具查看请求情况发现没有对这个js的请求。但是我在浏览器地址栏中输入这个js的地址去可以获得这个js。

  • 写回答

2条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2025-02-12 08:34
    关注
    让【道友老李】来帮你解答,本回答参考gpt编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    在 WordPress 中引入脚本和样式文件时,由于钩子的使用和条件的设置,可能导致某些脚本无法加载。根据您提供的代码和描述,以下是对问题的解析和解决方案。

    问题分析

    1. 钩子的判断: 您使用的钩子是 admin_enqueue_scripts,而您希望只在特定的后台页面(主题设置页面)加载脚本和样式。但是在判断 $hook 是否匹配 appearance_page_moyun-settings 时,代码中存在一个小错误:
      if ('appearance_page_moyun-settings' !== $hook) {
         return;
      }
      

      这里的比较操作符应该是!==,也就是"不相等"。

    2. 脚本的排队加载: 在 WordPress 中,wp_enqueue_scriptwp_enqueue_style 方法会在队列中排队,以便在合适的时间加载它们。如果在之后的某个地方出错,可能会导致脚本没有被加载。
    3. 文件的存在与读取权限: 虽然您已经确认通过直接输入 URL 可以访问 JavaScript 文件,但请确保文件路径正确且 PHP 进程有读取文件的权限。

    修改后的代码示例

    在原有代码中进行如下修改:

    function moyun_admin_scripts($hook) {
        // 调试输出
        error_log('Current hook: ' . $hook);
        
        // 只在主题设置页面加载
        if ('appearance_page_moyun-settings' !== $hook) { // 修正为 !==
            return;
        }
        
        // 引入样式
        wp_enqueue_style(
            'theme-settings',
            get_template_directory_uri() . '/assets/css/admin-theme-setting.css',
            array(),
            '1.0'
        );
        
        // 引入主题设置脚本
        $file_path = get_template_directory() . '/assets/js/theme-settings.js';
        if (!file_exists($file_path)) {
            error_log('theme-settings.js 文件不存在: ' . $file_path);
        } else {
            wp_enqueue_script(
                'moyun-admin-settings',
                get_template_directory_uri() . '/assets/js/theme-settings.js',
                array('jquery'),
                '1.0',
                true
            );
        }
    }
    // 添加新的钩子
    add_action('admin_enqueue_scripts', 'moyun_admin_scripts');
    

    进一步的调试步骤

    1. 确认钩子是否触发: 在调试输出中(error_log),确保 $hook 的输出与期望一致。您可以查看 PHP 的错误日志判断是否正常到达了该判断。
    2. 查看控制台的网络请求: 使用开发者工具检查网络请求部分,看是否有对 theme-settings.js 的请求。如果没有,意味着脚本未被排队加载。
    3. 检查文件路径: 检查 get_template_directory_uri() 返回的路径是否正确。可通过调试输出 $file_path 和格式化后的 URL。
    4. 权限问题: 确保服务器上的相关文件夹与文件具有合适的读取权限。

    结论

    通过以上分析和代码修正,相信可以有效解决您在管理员后台无法加载 JavaScript 文件的问题。如果问题仍然存在,请进一步检查具体的错误日志或直接在代码中输出调试信息。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月12日