JQuery 排队导致 wordpress 未捕获错误

Posted

技术标签:

【中文标题】JQuery 排队导致 wordpress 未捕获错误【英文标题】:JQuery enqueue causing wordpress uncaught error 【发布时间】:2021-06-02 12:41:53 【问题描述】:

您好,我是一个初学者,正在创建简单的 wordpress 模板。除了我的functions.php文件(wp_enqueue('jquery');)中的粗体代码行之外,一切正常。当我排除它时,错误消失了,但是当我查看源代码时,我没有看到 wordpress 添加的 JQuery。不确定这是代码问题还是 Jquery 版本问题。我尝试添加 JQuery 迁移插件,但仍然是同样的错误。我在 Laragon 设置的本地机器上运行所有这些。下面是我的代码和错误。感谢任何帮助。

这是我的 functions.php 文件:

    <?php

function load_css()
    wp_register_style('bootstrap', get_template_directory_uri() . '/css/bootstrap.min.css', array(), false, 'all');
    wp_enqueue_style('bootstrap');

add_action('wp_enqueue_scripts', 'load_css');


function load_js()
     wp_enqueue('jquery');
     wp_register_style('bootstrap', get_template_directory_uri() . '/js/bootstrap.min.js', 'jquery', false, true);
     wp_enqueue_script('bootstrap');
 
 add_action('wp_enqueue_scripts', 'load_js');

这里是 header.php 文件:

    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<?php wp_head();?>
</head>
<body>

这里是 footer.php 文件

<?php wp_footer();?>
</body>
</html>

这里是 front-page.php 文件

<?php get_header();?>
<?php get_footer();?>

错误信息: 致命错误:未捕获错误:调用 C:\laragon\www\test\wp-content\themes\SeanTheme\functions.php:13 中未定义的函数 wp_enqueue() 堆栈跟踪:#0 C:\laragon\www\test\ wp-includes\class-wp-hook.php(287): load_js('') #1 C:\laragon\www\test\wp-includes\class-wp-hook.php(311): WP_Hook->apply_filters (NULL, Array) #2 C:\laragon\www\test\wp-includes\plugin.php(484): WP_Hook->do_action(Array) #3 C:\laragon\www\test\wp-includes\script -loader.php(2004): do_action('wp_enqueue_scri...') #4 C:\laragon\www\test\wp-includes\class-wp-hook.php(287): wp_enqueue_scripts('') #5 C:\laragon\www\test\wp-includes\class-wp-hook.php(311): WP_Hook->apply_filters(NULL, Array) #6 C:\laragon\www\test\wp-includes\plugin. php(484): WP_Hook->do_action(Array) #7 C:\laragon\www\test\wp-includes\general-template.php(3005): do_action('wp_head') #8 C:\laragon\www \test\wp-content\themes\SeanTheme\header.php(8): wp_head() #9 C:\laragon\www\test\wp-includes\template.php(730): require_once('C:\laragon \www\...') #10 C:\lar agon\www\test\wp-includes\template 在第 13 行的 C:\laragon\www\test\wp-content\themes\SeanTheme\functions.php 中

【问题讨论】:

如错误消息所述,wp_enqueue(...);(functions.php 文件中的第 13 行)不是有效的函数名称。它是(在这种情况下)wp_enqueue_script():P 另外,您不应该使用wp_register_style() 来注册 JS 文件。这就是wp_enqueue_script() 的用途。 【参考方案1】:

WordPress 会自动为您加载 jQuery,如果另一个脚本需要 jquery,只需在将其他 javascript 文件排入队列时在 $deps 参数中指定它。所以删除 wp_enqueue('jquery')。

function load_js()
     wp_enqueue_script('bootstrap', get_template_directory_uri() . '/js/bootstrap.min.js', array('jquery'), null, true);
 
 add_action('wp_enqueue_scripts', 'load_js');

【讨论】:

感谢@Phil 的回复和解释

以上是关于JQuery 排队导致 wordpress 未捕获错误的主要内容,如果未能解决你的问题,请参考以下文章

将 Bootstrap 模板转换为 Wordpress 时未加载 jQuery

使用 PrimeFaces 手动添加/加载 jQuery 会导致未捕获的 TypeErrors

Angular 2 从 Jquery 调用 Typescript 函数会导致未捕获的 TypeError

作为 ID 的 JQuery 变量导致未捕获错误:语法错误,无法识别的表达式:'#cell32'

未捕获的 ReferenceError:未定义 jQuery

WordPress排队脚本-jQuery