
本文介绍如何在满足特定条件(例如 URL 中包含 “partner” 关键词)时,获取并使用原始 URL 来源 (Referer)。我们将通过 PHP 代码示例,展示如何使用 session 和 WordPress 的 wpcf7_form_tag 过滤器来实现这一功能,从而在 Contact Form 7 表单中动态填充 Referer 信息,为数据追踪和客户来源分析提供支持。
在网站开发中,追踪用户来源对于市场营销和数据分析至关重要。 有时,我们希望仅在用户通过特定渠道(例如包含 “partner” 关键词的推广链接)访问时,才记录其来源信息。本文将详细介绍如何使用 PHP 和 WordPress 的 Contact Form 7 插件,实现有条件地获取和使用原始 URL 来源(Referer)的功能。
核心思路
使用 Session 存储 Referer 和 Landing Page: 首次访问时,将 HTTP_REFERER (来源页面) 和 REQUEST_URI (着陆页面) 存储在 PHP Session 中。利用 Contact Form 7 过滤器: 使用 wpcf7_form_tag 过滤器,在 Contact Form 7 表单中动态填充 Referer 信息。条件判断: 在填充表单之前,检查着陆页面 URL 是否满足特定条件(例如包含 “partner” 关键词)。
具体实现步骤
1. 存储 Referer 和 Landing Page 到 Session
以下代码片段用于在用户首次访问时,将 Referer 和 Landing Page 存储到 PHP Session 中。
function wpshore_set_session_values(){ if (!session_id()) { session_start(); } if (!isset($_SESSION['OriginalRef'])) { $_SESSION['OriginalRef'] = $_SERVER['HTTP_REFERER']; } if (!isset($_SESSION['LandingPage'])) { $_SESSION['LandingPage'] = $_SERVER["REQUEST_URI"]; }}add_action('init', 'wpshore_set_session_values');
代码解释:
session_start(): 启动 PHP Session。$_SERVER[‘HTTP_REFERER’]: 获取 HTTP Referer,即用户从哪个页面跳转过来的。$_SERVER[“REQUEST_URI”]: 获取请求的 URI,即用户访问的当前页面。isset($_SESSION[‘OriginalRef’]): 检查 session 中是否已经存在 OriginalRef 变量,防止重复赋值。add_action(‘init’, ‘wpshore_set_session_values’): 将 wpshore_set_session_values 函数挂载到 init 钩子上,确保在 WordPress 初始化时执行。
2. 使用 Contact Form 7 过滤器动态填充表单
以下代码使用 wpcf7_form_tag 过滤器,根据条件判断,动态填充 Contact Form 7 表单中的 referer-page3 字段。
function getRefererPage3( $form_tag ){ if (strpos($_SESSION['LandingPage'], 'partner') !== false) { if ( $form_tag['name'] == 'referer-page3' ) { $form_tag['values'][] = $_SESSION['LandingPage']; } } return $form_tag;}if ( !is_admin() ) { add_filter( 'wpcf7_form_tag', 'getRefererPage3' );}
代码解释:
strpos($_SESSION[‘LandingPage’], ‘partner’) !== false: 检查 $_SESSION[‘LandingPage’] 中是否包含 “partner” 字符串。 strpos 函数返回子字符串第一次出现的位置,如果未找到则返回 false。 !== false 用于确保返回值不是 false,因为 strpos 可能会返回 0,在弱类型比较中会被认为是 false。$form_tag[‘name’] == ‘referer-page3’: 检查当前处理的表单字段的名称是否为 referer-page3。$form_tag[‘values’][] = $_SESSION[‘LandingPage’]: 将 $_SESSION[‘LandingPage’] 的值添加到 referer-page3 字段的值数组中。add_filter( ‘wpcf7_form_tag’, ‘getRefererPage3’ ): 将 getRefererPage3 函数挂载到 wpcf7_form_tag 过滤器上。 wpcf7_form_tag 过滤器允许修改 Contact Form 7 表单标签的属性。if ( !is_admin() ): 确保代码只在前台页面执行,避免在 WordPress 后台管理界面产生影响。
3. 在 Contact Form 7 表单中使用该字段
在 Contact Form 7 表单中,添加一个名称为 referer-page3 的隐藏字段。例如:
[hidden referer-page3]
注意事项:
确保 PHP Session 已经正确配置和启用。referer-page3 字段的名称可以根据实际情况进行修改,但需要与代码中的 $form_tag[‘name’] == ‘referer-page3’ 保持一致。可以根据需要修改条件判断的逻辑,例如检查 Referer 是否包含特定域名。由于 HTTP_REFERER 可能为空,需要做好空值处理,避免出现错误。为了提高安全性,可以对 Referer 和 Landing Page 进行验证和过滤,防止恶意代码注入。
总结
通过以上步骤,我们成功实现了在满足特定条件时,获取并使用原始 URL 来源的功能。 这种方法可以用于追踪用户来源,分析推广效果,以及为用户提供个性化的服务。 通过灵活运用 PHP Session 和 WordPress 的 wpcf7_form_tag 过滤器,我们可以轻松地实现各种复杂的表单功能。
以上就是根据条件获取原始 URL 来源(Referer)的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1288555.html
微信扫一扫
支付宝扫一扫