Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
使用 API 响应填充 Contact Form 7 提交的数据_创想鸟

使用 API 响应填充 Contact Form 7 提交的数据

使用 api 响应填充 contact form 7 提交的数据

本文介绍了如何使用 API 响应动态填充 Contact Form 7 表单提交的数据,并将其添加到邮件正文中。通过 `wpcf7_before_send_mail` 钩子,在邮件发送前获取 API 数据,然后替换邮件模板中的占位符,最终将 API 响应添加到邮件内容中,同时提供将 API 响应推送到 JavaScript 事件 `wpcf7mailsent` 的方法。

Contact Form 7 是 WordPress 中一款流行的表单插件。有时,我们需要在表单提交后,根据用户输入的数据从外部 API 获取信息,并将这些信息添加到邮件正文中。本文将详细介绍如何实现这一功能。

核心思路

核心思路是利用 Contact Form 7 提供的 wpcf7_before_send_mail 钩子,在邮件发送之前拦截表单数据,调用 API 获取数据,然后修改邮件内容,将 API 响应添加到邮件正文中。

具体步骤

在 Contact Form 7 邮件标签中设置占位符

首先,在 Contact Form 7 编辑器的“邮件”标签中,你需要定义一个占位符,用于在邮件正文中插入 API 响应。例如,你可以使用 {{api_response}} 作为占位符:

Dear [your-name],This is the email body...{{api_response}}"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."

这个占位符将在后面的步骤中被 API 响应的内容替换。

使用 wpcf7_before_send_mail 钩子获取 API 数据并替换占位符

接下来,你需要编写一个函数,挂载到 wpcf7_before_send_mail 钩子上。这个函数将完成以下任务:

获取表单提交的数据。调用 API 获取响应数据。替换邮件正文中的占位符。更新 Contact Form 7 的邮件属性。

以下是一个示例代码:

add_action( 'wpcf7_before_send_mail', 'Kiri_cf7_api_sender' );function Kiri_cf7_api_sender( $contact_form ) {    if ( 'Quote_form' === $contact_form->title ) {        $submission = WPCF7_Submission::get_instance();        if ( $submission ) {            $posted_data = $submission->get_posted_data();            $name    = $posted_data['your-name'];            $surname = $posted_data['your-name2'];            $phone   = $posted_data['tel-922'];            $urltest = $posted_data['dynamichidden-739']; // Not sure if this should be a form field, or just some kind of option field.            if ( strpos( $urltest, '?phone' ) !== false ) {                $url = 'api string';            } elseif ( strpos( $urltest, '?email' ) !== false ) {                $url = 'api string';            } else {                $url = 'api string';                $response = wp_remote_post( $url );                $body     = wp_remote_retrieve_body( $response );            }        }        // Get the email tab from the contact form.        $mail = $contact_form->prop( 'mail' );        // Retreive the mail body, and string replace our placeholder with the field from the API Response.        // Whatever the api response is within the $body - if you have to json decode or whatever to get it.        $mail['body'] = str_replace( '{{api_response}}', $body['field'] , $mail['body'] );        // Update the email with the replaced text, before sending.        $contact_form->set_properties( array( 'mail' => $mail ) );        // Push a response to the event listener wpcf7mailsent.        $submission->add_result_props( array( 'my_api_response' => $body ) );    }}

代码解释:

add_action( ‘wpcf7_before_send_mail’, ‘Kiri_cf7_api_sender’ );:将 Kiri_cf7_api_sender 函数挂载到 wpcf7_before_send_mail 钩子上。if ( ‘Quote_form’ === $contact_form->title ) { … }:确保这段代码只在特定的 Contact Form 7 表单(这里是 Quote_form)上执行。$submission = WPCF7_Submission::get_instance();:获取当前表单提交的实例。$posted_data = $submission->get_posted_data();:获取表单提交的数据。$name = $posted_data[‘your-name’]; 等:从提交的数据中获取特定字段的值。$response = wp_remote_post( $url ); 和 $body = wp_remote_retrieve_body( $response );:使用 WordPress 的 wp_remote_post 函数调用 API,并获取响应内容。$mail = $contact_form->prop( ‘mail’ );:获取 Contact Form 7 的邮件属性。$mail[‘body’] = str_replace( ‘{{api_response}}’, $body[‘field’] , $mail[‘body’] );:使用 str_replace 函数将邮件正文中的占位符 {{api_response}} 替换为 API 响应的内容。这里假设 API 响应是一个数组,你需要根据实际情况调整 $body[‘field’]。$contact_form->set_properties( array( ‘mail’ => $mail ) );:更新 Contact Form 7 的邮件属性,使修改后的邮件内容生效。$submission->add_result_props( array( ‘my_api_response’ => $body ) );:将 API 响应添加到提交结果属性中,以便在 JavaScript 中访问。

在 JavaScript 中监听 wpcf7mailsent 事件

Contact Form 7 在邮件成功发送后会触发 wpcf7mailsent 事件。你可以在 JavaScript 中监听这个事件,并访问 API 响应的数据。

    document.addEventListener('wpcf7mailsent', function (event) {        console.log(event.detail.my_api_response);    }, false);

这段代码将在邮件发送成功后,将 API 响应的数据打印到浏览器的控制台中。event.detail.my_api_response 包含了我们在 PHP 代码中使用 $submission->add_result_props() 添加的 API 响应数据。

注意事项

确保 API 的 URL 是正确的,并且你的 WordPress 服务器可以访问该 API。根据 API 响应的格式,正确解析 API 响应的内容,并将其插入到邮件正文中。如果 API 调用失败,应该进行错误处理,避免影响邮件发送。根据实际需求,调整代码中的表单名称和字段名称。$urltest = $posted_data[‘dynamichidden-739’]; 这一行代码需要根据实际情况进行调整,确保 $urltest 变量包含正确的 URL 参数。$body[‘field’] 需要根据 API 返回的 JSON 结构进行调整,确保能够正确获取到需要的数据。

总结

通过以上步骤,你可以使用 API 响应动态填充 Contact Form 7 表单提交的数据,并将其添加到邮件正文中。这种方法可以让你在邮件中包含更丰富的信息,提升用户体验。同时,将 API 响应推送到 JavaScript 事件 wpcf7mailsent,可以方便地在前端进行进一步的处理和展示。

以上就是使用 API 响应填充 Contact Form 7 提交的数据的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1324249.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
基于模态框点击显示不同数据的教程
上一篇 2025年12月12日 10:56:28
Laravel 中安全地托管 phpDocumentor 生成的文档
下一篇 2025年12月12日 10:56:40

相关推荐

  • 液晶显示器HDR功能需要哪些硬件支持?

    要真正发挥HDR功能,液晶显示器需具备高亮度、局部调光和宽色域;显卡须支持HDR解码与输出;接口和线缆需满足HDMI 2.0b或DP 1.4以上标准。缺少任一环节,HDR体验将大打折扣。判断真伪HDR应参考VESA DisplayHDR认证,优先选择DisplayHDR 600及以上等级,具备FAL…

    2026年9月23日
    000
  • 使用Java Stream高效提取嵌套集合中的唯一元素

    本教程深入探讨如何利用Java Stream API高效处理嵌套集合,从包含多层列表的对象中提取并收集唯一的元素。我们将重点介绍flatMap()和mapMulti()两种强大的流操作,演示如何将List中每个Employee对象内部的List扁平化为单一的地址流,进而简洁且高可读性地获取所有员工的…

    2026年9月23日
    000
  • Linux sudoers文件配置方法

    使用visudo编辑sudoers文件可安全配置用户权限,避免语法错误。通过用户、主机、命令别名简化管理,合理分配无需密码或特定命令权限,禁止赋予shell类命令无限制权限,并将规则写入/etc/sudoers.d/目录便于维护,配置后需测试并备份以防出错。 sudoers 文件用于配置 Linux…

    2026年9月23日
    200
  • 使用 PHP 解析 JSON 文件并在网页中显示特定数据

    本文档旨在指导初学者如何使用 PHP 解析 JSON 文件,并提取其中的特定数据,最终将其展示在网页上。我们将通过一个简单的例子,演示如何读取 JSON 文件,解码 JSON 数据,并使用 PHP 的数组操作和 HTML 元素将数据呈现出来。 读取 JSON 文件并解码 首先,我们需要准备一个 JS…

    2026年9月23日
    000
  • mysql添加索引命令 mysql创建普通唯一复合索引教程

    mysql添加索引命令 mysql创建普通唯一复合索引教程mysql添加索引命令 mysql创建普通唯一复合索引教程mysql添加索引命令 mysql创建普通唯一复合索引教程mysql添加索引命令 mysql创建普通唯一复合索引教程

    在mysql中给表加索引的核心目的是提升查询效率。解决方案是通过create index或alter table语句创建不同类型的索引:1. 普通索引用于加快非唯一列的查询;2. 唯一索引确保列值唯一性并提升性能;3. 复合索引支持多列组合查询,遵循最左前缀原则;4. 复合唯一索引结合复合和唯一特性…

    2026年9月23日 • 用户投稿
    000
  • VSCode快速配置React:JSX支持、中文文档、组件调试

    首先确保安装es7 react/redux/graphql/react-native snippets扩展并配置jsconfig.json文件以启用jsx语法高亮;通过安装中文语言包汉化界面,并结合浏览器书签、翻译工具及笔记软件高效查阅react中文文档;调试react组件时需安装debugger …

    2026年9月23日
    200
  • PaintToolSAI的AI功能如何裁剪图片?教你精准实现裁剪方法

    PaintToolSAI的AI功能如何裁剪图片?教你精准实现裁剪方法PaintToolSAI的AI功能如何裁剪图片?教你精准实现裁剪方法PaintToolSAI的AI功能如何裁剪图片?教你精准实现裁剪方法PaintToolSAI的AI功能如何裁剪图片?教你精准实现裁剪方法

    PaintToolSAI没有AI裁剪功能,其裁剪依赖手动操作。用户需使用选区工具框选区域,再通过“画布→裁剪”完成,过程基础但精确,适合专注绘画而非复杂图像处理的场景。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ PaintToolSAI…

    2026年9月23日 • 用户投稿
    100
  • X 旗下 Grok 推出即时语音搜索功能 向 Google 发起挑战?

    近日,X 平台的人工智能助手 Grok 正式上线“即时语音搜索”功能,用户现在可通过语音直接提问,触发实时网络检索,并迅速获得整合后的精准答复。这项新能力意在优化信息查询流程,推动人机互动向更自然、高效的形态发展。 根据官方说明与实际用户体验,Grok 的语音搜索实现了“说话即搜、即时回应”的流畅体…

    2026年9月23日
    100
  • Java JUnit assertThrows 与异常消息比对:避免常见陷阱

    本教程深入探讨在 Java JUnit 中使用 assertThrows 进行异常测试时常见的 assertEquals 误用问题。它详细解释了为何不能直接将期望的字符串消息与捕获到的异常对象进行比对,并提供了正确的解决方案:通过 e.getMessage() 获取异常消息进行精确断言,确保测试的准…

    2026年9月23日
    000
  • PHP:根据条件动态禁用表格中的按钮

    本文旨在解决在PHP中,根据表格行中两列的值是否相等,动态禁用对应按钮的问题。通过修改循环遍历数据并生成HTML表格的代码,在生成按钮时增加条件判断,实现当mi_name列和item_name列的值相等时,禁用该行的按钮。文章提供两种实现方式,并附带代码示例,帮助开发者快速实现此功能。 在PHP中动…

    2026年9月23日
    100
  • 漫蛙漫画PC电脑版官网入口 漫蛙高清漫画免VIP沉浸式阅读体验

    您在寻找漫蛙漫画的pc电脑版官网入口吗?为了在电脑大屏幕上获得最佳的高清、免vip沉浸式阅读体验,本文将为您分享最新的官网入口。当常用链接失效时,掌握备用入口是关键。目前,最适合pc端浏览的官网入口是 https://manwa.me(推荐非大陆地区),以及一个备用高清漫画网址 https://fu…

    2026年9月23日
    500
  • safari浏览器如何导入Netscape格式的书签文件_safari浏览器导入Netscape书签方法

    Safari无法直接读取Netscape格式书签时,可通过HTML文件转换、第三方工具修复或借助Chrome/Firefox中转导入。首先确认书签文件含标准结构,尝试直接导入Safari;若失败,使用Linkman Lite等工具修复格式后导入;或通过Chrome先行导入再导出标准HTML文件,最后…

    2026年9月23日
    000
  • VSCode如何通过AI优化内存使用 VSCode智能内存分析调试插件

    ai并不能直接优化vscode的内存占用,而是通过赋能智能化的内存分析调试插件,间接提升vscode的运行效率和开发体验;2. 这类插件通过采集堆快照、cpu性能数据、gc日志和扩展资源消耗等运行时信息,结合ai的模式识别与异常检测能力,精准识别内存泄漏、未清理的事件监听器、循环引用等问题;3. a…

    2026年9月23日
    300
  • PHP容器与依赖注入怎么理解_PHP中DI容器概念与Pimple等库应用

    依赖注入通过外部传入依赖解耦代码,容器如Pimple集中管理对象创建与依赖解析,提升可测试性与维护性,适用于中小型项目。 PHP中的容器和依赖注入(Dependency Injection,简称DI)是现代开发中解耦代码、提升可测试性和可维护性的核心技术。理解它们的关键在于掌握“控制反转”(Inve…

    2026年9月23日
    100
  • 悟空浏览器提示“网络错误”无法上网怎么办_悟空浏览器网络错误解决方法

    首先检查网络连接是否正常,确认Wi-Fi或移动数据已开启并信号良好;尝试切换网络类型或重启路由器。若问题仍存在,进入设置清除悟空浏览器缓存与数据,排除因缓存堆积导致的加载失败。接着可更改DNS为8.8.8.8和114.114.114.114以提升解析成功率。同时禁用浏览器插件与扩展功能,避免其干扰网…

    2026年9月23日
    100
  • VS Code算法实战:竞赛编程与调试环境搭建

    首先安装编程语言环境及VS Code扩展,如C/C++、Code Runner和LeetCode;接着配置Code Runner支持编译运行与输入重定向;最后通过代码片段提升编码速度,形成高效竞赛开发环境。 在竞赛编程中,高效的开发环境能大幅提升编码速度与调试效率。VS Code凭借轻量、可扩展和强…

    2026年9月23日
    000
  • 解决WordPress插件中$wpdb对象未初始化导致的数据库更新失败问题

    本文旨在解决wordpress插件开发中,使用`$wpdb`对象进行数据库更新时出现`call to a member function query() on null`错误。该错误通常是由于`$wpdb`对象未正确初始化所致。教程将详细解释错误原因,并提供通过引入`wp-config.php`文件…

    2026年9月23日
    100
  • 字节入局,AR眼镜掀起新“风口”?

    近日,关于老凤祥与字节跳动合作推出AI眼镜的消息在网络上引发热议。据相关媒体报道,老凤祥计划联合字节跳动旗下的火山引擎共同开发多款AI眼镜,并由豆包大模型提供技术支持,预计将在今年7月正式发布。 对此,6月12日,火山引擎方面进行了澄清。其负责人表示,并未有与老凤祥合作研发AI智能眼镜的计划。而豆包…

    2026年9月23日
    100
  • mysql安装完如何连接java mysql jdbc驱动配置教程

    mysql安装完如何连接java mysql jdbc驱动配置教程mysql安装完如何连接java mysql jdbc驱动配置教程mysql安装完如何连接java mysql jdbc驱动配置教程mysql安装完如何连接java mysql jdbc驱动配置教程

    下载并导入jdbc驱动包;2. 正确配置数据库连接信息;3. 加载驱动并建立连接。使用java连接mysql的关键在于配置好jdbc驱动,首先去mysql官网下载对应版本的mysql-connector-java.jar包并导入项目,普通项目放入lib目录并添加为库,maven项目则在pom.xml…

    2026年9月23日 • 用户投稿
    200
  • 在无Maven或Eclipse环境下手动构建Java Web应用WAR包的教程

    本教程详细介绍了如何在不依赖Maven或Eclipse等集成开发环境的情况下,为Java Web应用程序手动生成WAR(Web Application Archive)文件。文章首先阐述了WAR文件的基本结构,随后通过一个Ant构建脚本的实例,指导读者完成从源代码编译、文件组织到最终WAR包生成的全…

    2026年9月23日
    000

发表回复

登录后才能评论
关注微信