【问题标题】:functions.php file not running my JavaScript in js folderfunctions.php 文件未在 js 文件夹中运行我的 JavaScript
【发布时间】:2020-12-10 03:35:18
【问题描述】:

我只是想在我的 Wordpress 博客中添加一个 JS 手风琴,但手风琴.js 文件似乎没有通过 functions.php 文件加载。

但是,如果我在 header.php 文件中加载 js 代码,它会完美运行。

这是functions.php代码:

// enqueue script
function my_scripts_method() {
if ( !is_admin() ) {
  wp_enqueue_script('jquery-ui-accordion');
  wp_enqueue_script(
    'custom-accordion',
    get_stylesheet_directory_uri() . '/js/accordion.js',
    array('jquery')
    );
  }
}
add_action('wp_enqueue_scripts', 'my_scripts_method');

这是一个随处可见的简单代码,似乎对其他人都有效,当然除了我。

有趣的是,一旦 js 代码通过 header.php 包含加载,手风琴的样式表就会运行。

我注意到的是,我似乎无法从 functions.php 文件链接和加载文件。这不是我加载困难的唯一文件。下面的文件也会发生同样的事情:

function wpb_load_fa() { 
wp_enqueue_style( 'wpb-fa', get_stylesheet_directory_uri() . '/fonts/css/font-awesome.min.css' );
 }
 add_action( 'wp_enqueue_scripts', 'wpb_load_fa' );

我已尽我所能加载 font-awesome.min.css 无济于事。

我会不会在 functions.php 文件中对我的文件引用结构做错了?目录结构是按照说明创建的。谢谢。

【问题讨论】:

    标签: javascript php wordpress


    【解决方案1】:

    你试过 wp_register_script(); ? 功能是

    wp_register_script( string $handle, string|bool $src, string[] $deps = array(), string|bool|null $ver = false, bool $in_footer = false )
    

    check here for docs

    【讨论】:

    • 我只是一个简单的 wordpress 用户,目前对编码不太感兴趣。如果你能把它分解一下……那就太好了。谢谢。
    【解决方案2】:

    可能是因为你是以管理员身份登录的,如果当前用户不是管理员,你的代码只会添加js。您可以删除检查,代码将如下所示:

    // enqueue script
    function my_scripts_method() {
      wp_enqueue_script('jquery-ui-accordion');
      wp_enqueue_script(
        'custom-accordion',
        get_stylesheet_directory_uri() . '/js/accordion.js',
        array('jquery')
        );
    }
    add_action('wp_enqueue_scripts', 'my_scripts_method');
    

    【讨论】:

    • 感谢 Nguyen,但仍然没有机会。正如我所说,不仅仅是这个脚本有这个问题。另一个明显的问题是字体太棒了。字体真棒与我博客上的主菜单有关,箭头应该显示在哪里,但到目前为止,它只是拒绝工作。他们只有在我打电话尝试直接从标题中调用它们时才开始工作,这不是我想要的。
    【解决方案3】:

    请确保您没有以管理员用户身份登录,并确保在您包含此脚本之前包含 jQuery。因为你的脚本依赖于 jQuery。

    get_stylesheet_directory_uri() . '/js/accordion.js',
    array('jquery')
    );
    

    【讨论】:

    • 你能帮我一个标准代码,按照建议包含 jQuery,因为我不知道这样做。谢谢。
    • wp_enqueue_script('jquery')
    【解决方案4】:

    你的代码有一点问题

    替换这个

    get_stylesheet_directory_uri() . '/js/accordion.js'
    

    get_template_directory_uri() . '/js/accordion.js',
    

    我通知你

    get_stylesheet_directory_uri() function 
    

    仅用于访问 wordpress 全局 style.css 文件

    【讨论】:

    • 我早些时候注意到并尝试了该建议,但结果仍然相同。我没有,但有没有人真的经历过类似的事情,他们的出路是什么?不过感谢您的建议!
    【解决方案5】:
    function my_scripts_method() {
        // wp_enqueue_script('jquery-ui-accordion');
        wp_enqueue_script('custom-accordion', get_template_directory_uri().'/js/accordion.js',array());
    }
    add_action('wp_enqueue_scripts', 'my_scripts_method');
    

    【讨论】:

    • 您好 Manog,感谢您的回复。我尝试了代码,但结果仍然相同。我觉得这与以管理员身份登录没有任何关系,因为同样的问题会影响我的 /fonts/css/font-awesome.min.css 文件。通过我不是管理员的媒体在线检查它总是产生相同的结果。真是令人沮丧……
    • 虽然这段代码可以回答问题,但包括一些额外的细节和信息可以大大提高其长期价值,帮助其他人理解它,因此可以带来更多的点赞。考虑添加一些解释性文字
    猜你喜欢
    • 2022-01-06
    • 2014-02-17
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多