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'