
本文详解如何修复WordPress前端AJAX中ajax_url is not defined错误,涵盖脚本加载顺序、wp_localize_script正确用法、钩子时机及调试技巧。
本文详解如何修复wordpress前端ajax中`ajax_url is not defined`错误,涵盖脚本加载顺序、`wp_localize_script`正确用法、钩子时机及调试技巧。
在WordPress开发中,使用AJAX与后端交互时,前端JavaScript常需调用admin-ajax.php。但若出现 ReferenceError: ajax_url is not defined,根本原因通常是:全局变量 ajax_url(或你自定义的 bbingo2_obj.ajax_url)尚未被注入到页面DOM中,而JS脚本已提前执行。
你的代码逻辑本身是正确的——wp_localize_script 用于将PHP变量安全传递至JS环境,wp_enqueue_script 注册并加载脚本,add_action 声明AJAX处理钩子。但关键在于执行顺序与作用域:
安全的随机密码生成器。支持自定义长度、字符类型(大写/小写字母、数字、特殊符号),排除相似字符,批量生成。纯 Python 标准库,无需 API 密钥。
✅ 正确做法:确保脚本在wp_enqueue_scripts中注册,并依赖jQuery与本地化数据
请将脚本注册、入队和本地化统一放在 functions.php 的 wp_enqueue_scripts 钩子中(不要在模板文件如index.php中直接调用wp_enqueue_script),以保证WordPress完整初始化后再执行:
// functions.php
function bbingo_enqueue_frontend_scripts() {
// 1. 注册并入队脚本(注意:依赖 'jquery')
wp_enqueue_script(
'BbingoAppG',
plugin_dir_url(__FILE__) . 'js/formProcess.js',
array('jquery'),
'0.1',
true // 推荐设为true:脚本置于










