WordPress表单邮件中如何获取上一页URL或页面标题?
解决WordPress申请表单获取跳转前来源页的问题
既然你提到了[_url]、[_post_name]这类标签,猜你用的应该是Contact Form 7插件吧?确实,这些内置标签只能返回当前表单页的信息,没法拿到用户跳转前的来源页。不过咱们可以通过「隐藏字段 + JavaScript」的方式轻松搞定,具体步骤如下:
1. 在表单中添加隐藏字段
打开你的Contact Form 7表单编辑器,新增一个隐藏字段用来存储来源页信息,比如命名为referrer_page:
[hidden referrer_page id="referrer-page"]
2. 用JavaScript填充隐藏字段的值
接下来编写一段JS代码,获取document.referrer的值并赋值给刚才的隐藏字段。你可以把这段代码添加到主题的functions.php中,或者用自定义HTML插件插入到表单所在页面:
<script> document.addEventListener('DOMContentLoaded', function() { const referrerField = document.getElementById('referrer-page'); const referrerUrl = document.referrer; if (referrerUrl && referrerField) { referrerField.value = referrerUrl; } else { // 处理用户直接访问表单页的情况,设置默认提示 referrerField.value = '用户直接访问表单页'; } }); </script>
3. 在邮件模板中引用该字段
现在你可以在Contact Form 7的邮件正文中使用[referrer_page]标签,收到的邮件就能显示用户跳转前的来源URL了:
用户跳转前页面:[referrer_page]
补充:获取来源页标题(可选)
如果还需要获取来源页的标题,document.referrer只能拿到URL,没法直接获取标题。如果来源页是你自己网站的同域页面,可以通过URL参数传递标题:
- 在职位详情页的申请按钮链接中,追加标题参数:
<a href="https://www.inext.se/job-apply-form/?id=6770&title=<?php echo urlencode(get_the_title()); ?>">申请职位</a> - 然后在表单的JS代码中,新增逻辑获取URL参数里的标题,赋值给另一个隐藏字段(比如
referrer_title):// 封装获取URL参数的函数 function getUrlParam(name) { const urlParams = new URLSearchParams(window.location.search); return urlParams.get(name); } const titleField = document.getElementById('referrer-title'); const pageTitle = getUrlParam('title'); if (pageTitle && titleField) { titleField.value = decodeURIComponent(pageTitle); } - 最后在邮件模板中用
[referrer_title]标签即可调用来源页标题。
内容的提问来源于stack exchange,提问作者Istiak Mahmood
相关产品推荐
相关产品推荐

