AI 摘要

这篇文章讲了在解决 Ninja Forms 加载失败与样式优化问题中,作者遇到了一些困难。作者发现更换插件至Ninja Forms后依然出现表单无法提交、前端报错等问题,经过排查发现是因为jQuery被强制禁止加载,导致Ninja Forms前端JS无法正常运行。最终,作者提出了两种解决方案,一是恢复jQuery加载,二是按需加载jQuery以提高性能。同时,作者还建议不要随意禁止jQuery,优化表单样式以及按需加载jQuery来兼顾功能与性能。最终一句话总结为:Ninja Forms必须依赖jQuery,主题的优化代码可能会误杀。

如何解决 Ninja Forms 加载失败与样式优化问题


一、问题背景

在 WordPress 网站中,原本使用 WPForms 插件,前端出现JavaScript问题,

可以通过通过外部引入暂时解决问题。

最终由于 WPForms 免费版不支持表单数据存储,改用了 Ninja Forms。

但是,更换插件Ninja Forms后依然出现表单无法提交、前端报错等问题


二、遇到的问题现象

  1. 表单页面通过F12控制台查看报错日志:“nfInlineVars is not defined”
  2. 控制台 JS 报错,表单部分功能无法正常使用。
  3. 表单虽然显示,但提交失败或存在异常。

三、问题排查思路

1. 检查 WordPress 插件依赖

Ninja Forms、WPForms、Contact Form 7 等主流表单插件,均依赖 jQuery 库

怀疑是否因为主题或其它代码,导致 jQuery 未正常加载。


2. 检查主题代码

在主题 /wp-content/themes/wordpress-qzdy-themes-main/qzdy_fun.php 中发现以下代码:

function my_enqueue_scripts() {    wp_deregister_script('jquery');}add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts', 1 );if ( !is_admin() ) {    function my_init_method() {        wp_deregister_script( 'jquery' );    }    add_action('init', 'my_init_method');}

➡️ 直接禁止了全站的 jQuery 加载


结论

➡️ Ninja Forms 报错的根本原因是:jQuery 被强制禁止加载,导致 Ninja Forms 前端 JS 无法运行。


四、解决方案

方案一:简单粗暴恢复 jQuery 加载

  1. 将上述禁止 jQuery 的代码全部注释或删除:
// function my_enqueue_scripts() {//     wp_deregister_script('jquery');// }// add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts', 1 );// if ( !is_admin() ) {//     function my_init_method() {//         wp_deregister_script( 'jquery' );//     }//     add_action('init', 'my_init_method');// }
  1. 保存、清除缓存。

✅ 表单恢复正常,数据可提交,控制台不再报错。


方案二:按需加载 jQuery,性能最优

为了避免全站加载 jQuery,影响性能,可按需在表单所在页面加载。

例如,表单页面 ID 为 1744

function custom_enqueue_jquery_for_ninja_forms() {    if ( is_page(array(1744)) ) {         wp_enqueue_script('jquery');    } else {        wp_deregister_script('jquery');    }}add_action('wp_enqueue_scripts', 'custom_enqueue_jquery_for_ninja_forms', 1);

✅ 这样,只有表单页面加载 jQuery,其它页面性能不受影响。


五、总结与收获

  1. 不要随意禁止 jQuery,尤其是依赖 jQuery 的插件。
  2. Ninja Forms 默认样式太丑,建议禁用,配合自定义 CSS。
  3. 优化表单性能体验,按需加载 jQuery,做到功能与性能兼顾。
  4. 引入外部js需要谨慎,注意加载顺序

如果遇到类似问题,处理思路

✅ 检查是否手动或自动禁止了 jQuery。
✅ 检查是否手动加载插件 JS,导致依赖变量未注入。
✅ 保持插件默认机制,除非特别了解源码。

最终一句话总结:

➡️ Ninja Forms 必须依赖 jQuery,主题的优化代码可能会误杀;