如何获取Contact Form 7提交的远程IP并在CF7 to API中正常传递
问题根源
[wpcf7.remote_ip] 是Contact Form 7核心为邮件模板上下文单独开发的特殊预留短代码,仅在CF7生成邮件内容的逻辑中会自动解析取值。CF7 to API插件默认仅会读取用户提交的表单字段、以及常规的公开提交元数据,没有内置对这类邮件专属短代码的解析逻辑,因此直接在API配置中填写该标签不会被正确渲染,最终取值为空。
解决方案
有两种可直接落地的修复方案,按需选择即可:
方案1:无代码配置(更推荐新手使用)
直接在Contact Form 7表单编辑页中,新增一个隐藏字段,填写短代码为 [hidden remote_ip default:user_ip],保存表单后,在CF7 to API的配置中,需要填写IP的位置直接使用[remote_ip]标签即可正常推送IP值。
方案2:代码注入(灵活度更高)
如果需要直接使用原生的IP元数据,不想修改表单结构,可以在站点当前使用的主题functions.php文件,或者自定义功能插件中添加如下钩子代码:
// 为CF7 to API注入提交者远程IP到推送 payload add_filter('cf7_to_api_before_send_request', function($payload, $contact_form, $submission) { // 可自行修改数组键名remote_ip为你需要的参数名 $payload['remote_ip'] = $submission->get_meta('remote_ip'); return $payload; }, 10, 3);
添加后无需修改CF7 to API的原有配置,推送时会自动带上remote_ip参数和对应IP值。
内容的提问来源于stack exchange,提问作者Adamo Romano
相关产品推荐
相关产品推荐

