【问题标题】:Wordpress JQuery not running for pluginsWordpress JQuery 没有为插件运行
【发布时间】:2018-07-30 19:39:00
【问题描述】:

无论我做什么,JQuery 都无法在我的 wordpress 网站上正常运行!

注意 - 这是我的第一个 wordpress 网站

我已经尝试了现在似乎所有的东西,但我无法让 jQuery 在我的 wordpress 网站上正常运行。

我已尝试删除默认的 wordpress jquery 并使用

运行我自己的
wp_deregister_script('jquery');
wp_register_script('jquery', get_stylesheet_directory_uri() . '/inc/jquery-3.3.1.min.js', false, '3.3.1', false);
wp_enqueue_script('jquery');

但这会返回以下错误

Uncaught TypeError: jQuery.ajax is not a function / jquery-3.3.1.min.js Uncaught TypeError: jQuery.ajax is not a function / front-end-deps.js

我尝试在页眉和页脚脚本之前先加载 jquery

wp_enqueue_script('jquery');
include(locate_template('inc/layout/header-layout.php'));
wp_head();

这消除了jQuery.ajax is not a function 错误,但是我安装的任何插件都找不到 jquery 并返回类似的错误

jQuery 没有定义

**我已在可能的情况下手动将 jquery 调用到wp_enqueue_script(),例如

wp_enqueue_script('my_script_name', array('jquery'));

这往往会修复它,但此选项不适用于所有插件。

我已经完全删除了我所有的手动 jQuery 调用,并尝试让 wordpress 默认这样做

这不会立即引发任何错误,直到插件尝试使用 Jquery,然后我得到

未捕获的 TypeError JQuery.ajax 不是函数

wordpress 包含 Jquery 的方式肯定应该让整个网站都可以访问它吗?

几件事需要注意,正如我所说,这是我的第一个 wordpress 网站,所以我不确定这些是否正常

  • 当我检查网站并查看网站源时,没有 jquery。我假设它被编译并添加到'scripts.js'文件中?因为这是我的网站正在运行的唯一 javascript 文件。
  • 当我运行wp_enqueue_script('jquery') 时,它实际上并没有对代码做任何事情。例如,如果我在标题中运行它,然后检查源代码,它不会添加 jquery 或任何东西。我认为wp_enqueue_script('jquery') 应该在代码中添加 JQuery 是不是错了?
  • 我使用的一些无法找到 jQuery 的插件是 NinjaForms 和 SB Instagram(在我尝试提交表单之前,NinjaForms 不会显示任何错误,然后我会收到 jQuery.ajax is not a function

我已经在整个互联网上搜索并尝试了我发现的大部分内容,据我所知,这不是一个重复的问题!

有人对我如何解决这个问题并解决它有任何想法吗?

编辑

我可以得到它,以便 JQuery 加载,在源代码中可见并且不会出错,但是一旦插件尝试访问它,它就会抛出错误

Uncaught ReferenceError: jQuery is not defined

【问题讨论】:

  • 只使用wp_enqueue_script('jquery') 是不正确的方法。您应该使用操作 wp_enqueue_scripts 将您的脚本添加到 wordpress 队列
  • 另外,jquery 默认加载到 wordpress 中。如果您没有删除它,请检查可能停用它的缓存/插件/主题
  • @SamvelAleqsanyan 你能解释一下你所说的缓存/插件/主题是什么意思吗?这是一个文件吗? wordpress 设置?
  • 默认情况下(没有第三部分插件和主题的全新 wordpress 安装)加载 jquery 库。如果它不在您的网站上,那么它可能会被手动/从某些插件/主题功能中删除。我猜不出您的网站包含哪些主题/插件。但尝试停用所有插件,并切换到一些默认主题(如二十七)。然后你会在你的页面上看到jquery
  • 也许发布您正在使用的插件列表?

标签: javascript php jquery wordpress


【解决方案1】:

因此,您不必手动将 jquery 加入队列,因为您可以将它作为参数传递给您的其他查询。如果您查看下面的示例, wp_enqueue_script 函数有 3 个参数。 ('文件名', '目录', '要在此之前加载的脚本数组')。

wp_enqueue_script('semantic.min.js', '/wp-content/plugins/ct-plugin/js/semantic.min.js', array('jquery'));

另一件事是,在 wordpress 中,您不能使用 jQuery 的 $ 简写,您必须在脚本中输入 jQuery() 才能正确加载。也许如果您可以提供您尝试运行的脚本的一些上下文,它会帮助我们更好地诊断。

我最后的想法是,当插件被加载时,你并没有调用函数来加载这些值。请参阅下面的代码,了解如何挂钩到 wordpress 上的入队过程以加载您自己的脚本。

//Create the action to enqueue the admin scripts add_action('admin_enqueue_scripts', 'admin_scripts');

找到了如何使用 wp_enqueue_script 的资源here

【讨论】:

    【解决方案2】:
    function my_amazing_scripts() {
        wp_enqueue_script('my-great-script', plugin_dir_url( __FILE__ ).'/js/your-amazing-jquery.js', array('jquery'), '3.3.1', true);
    }
    add_action('wp_enqueue_scripts', 'my_amazing_scripts');
    

    【讨论】:

    • 这个目录不对,我的网站正在尝试获取http://mywebsite.local/wp-content/plugins/C:/xampp/htdocs/mywebsite/wp-content/themes/mywebsite/js/jquery-3.3.1.min.js
    • 在我的主题的functions.php 文件中。我将代码更改为wp_enqueue_script('my-great-script', get_stylesheet_directory_uri() .'/js/jquery-3.3.1.min.js', array('jquery'), '3.3.1', true);,它找到了文件,但我的插件仍然忽略它。
    • 您是在您的插件之一还是在您的主题中使用 jQuery?如果您需要插件加载 jQuery,请查看此示例:github.com/brabia/WordPress-Plugins/tree/master/plug-and-play/… 这是一个工作示例:wordpress.org/plugins/plug-and-play
    【解决方案3】:

    尝试添加

    define('CONCATENATE_SCRIPTS', false);
    

    在您的 wp-config.php 文件中。

    但是,这可能更像是一个调试工具,以帮助您隔离问题而不是“解决”它。 我认为您的问题是由插件引起的。请禁用所有插件并删除您在代码中手动添加 jQuery 的任何方法,然后重试。

    【讨论】:

    • 这已经在我的 wp-config.php 文件中,没有做任何事情。我已经尝试禁用所有插件,但仍然没有。
    猜你喜欢
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多