如何在JS文件中获取PHP函数存储的WordPress数据库值
在WordPress插件中让JS获取PHP存储的数据库值
要把PHP从数据库取出的管理员手机号传递给前端JS用于API请求,推荐使用WordPress官方的wp_localize_script方法,以下是具体实现步骤:
方法一:通过wp_localize_script传递数据(推荐)
这是WordPress标准做法,适合独立JS文件的场景:
- 在插件主PHP文件中注册并本地化脚本
// 注册并本地化聊天机器人JS脚本 function enqueue_chatbot_scripts() { // 替换为你的JS文件实际路径 $js_path = plugin_dir_url(__FILE__) . 'js/chatbot.js'; wp_enqueue_script('chatbot-script', $js_path, array('jquery'), '1.0', true); // 准备要传递给JS的数据库值 $script_data = array( 'adminPhone' => get_admin_phone_number() ); // 将PHP数据注入到JS全局对象中 wp_localize_script('chatbot-script', 'ChatbotConfig', $script_data); } add_action('wp_enqueue_scripts', 'enqueue_chatbot_scripts');
- 在JS文件中使用传递的值
修改你的fetch请求,把phoneNumber替换为全局对象中的值:
fetch('https://whatgpt.up.railway.app/api/query-train-gpt', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ query: userMessage, number: ChatbotConfig.adminPhone }), })
方法二:内联JS直接嵌入PHP值
如果你的JS代码是内联在PHP模板/插件文件中的,可以直接输出PHP值:
<script> document.addEventListener('DOMContentLoaded', function() { // 用esc_js确保输出内容符合JS语法安全规范 const adminPhoneNumber = '<?php echo esc_js(get_admin_phone_number()); ?>'; // 执行API请求 fetch('https://whatgpt.up.railway.app/api/query-train-gpt', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ query: userMessage, number: adminPhoneNumber }), }); }); </script>
注意事项
- 无论哪种方法,都要用
esc_js()处理输出的字符串,防止XSS安全漏洞 - 如果是在WordPress后台页面使用,把钩子换成
admin_enqueue_scripts wp_localize_script不仅能传单个值,还可以传递多个配置项,扩展性更强
内容的提问来源于stack exchange,提问作者krish
相关产品推荐
相关产品推荐

