【发布时间】:2018-08-30 22:00:24
【问题描述】:
我在 Wordpress 网站上使用 PHP 来执行此操作。如果您认为 JavaScript 或 jQuery 会更好,请告诉我。
我们的一个合作伙伴正在为我们投放 Google Google Adword 广告系列。我无权访问确切的广告系列 URL,因此我无法根据知道的广告系列 URL 创建 cookie。企业主希望在他们在我们的网站上提交表单时跟踪哪些活动用户来自。我的计划:
- 我想根据 Google Adword 广告系列关键字 URL 设置/命名一个 cookie。
- 如果从以前的广告系列中设置了一个 cookie,并且用户点击了一个新的广告系列,我想删除以前的广告系列 cookie(如果存在)并从新的广告系列中创建一个 cookie。
- 如果设置了这个 cookie - 并且它们在表单页面上 - 我想在 value 属性中加载一个带有 cookie 名称的隐藏输入 - 当提交表单时,该隐藏字段会告诉我们他们来自哪个活动来自。
以下是我们的合作伙伴正在使用的 Adword 广告系列 URL 示例:
?UTM_keyword=field%20service%20software_phrase&UTM_source=Paid%20Search&gclid=EAIaI
我想要做的是在“?UTM_keyword =”和“&UTM_source =”之间获取上述URL的部分 - 在这种情况下,它将是“field%20service%20software_phrase”。
这是我目前开发的代码:
header.php - 在每个页面上的<!DOCTYPE html> 之后
<?php
// load content-utm.php if the URI contains UTM_keyword
if (strpos($_SERVER['REQUEST_URI'], "UTM_keyword")){
// load content-utm.php
get_template_part( 'content', 'utm' );
}
?>
内容-utm.php
<?php
$uriSegments = parse_url($_SERVER['REQUEST_URI'], PHP_URL_QUERY);
// strip out UTM_keyword=
$uriSegments2 = substr($uriSegments, 12);
// strip out everything after &UTM_source= including &UTM_source=
$uriSegments3 = substr($uriSegments2, 0, strpos($uriSegments2, "&UTM_source="));
$_SESSION['uriName'] = $uriSegments3;
// create a cookie
if (strpos($_SERVER['REQUEST_URI'], $uriSegments3)){
$cookie_name = $uriSegments3;
$cookie_value = "UTM";
// make it a session cookie that expires after the browser is closed
setcookie($cookie_name, $cookie_value, 0, "/");
}
// I know how to remove a cookie but I'm not sure how I would remove THIS type of cookie
?>
form-page.php
<?php
// if the cookie is set
if (isset($_COOKIE[$uriSegments3])){
// load content-deluxe-cookie-tracking.php
get_template_part( 'partners/content', 'deluxe-cookie-tracking' );
}
?>
content-deluxe-cookie-tracking.php
<input type="hidden" id="1234567890" name="1234567890" value="<?php echo $uriSegments3 = $_SESSION['uriName']; ?>">
到目前为止:
- 我已经能够创建一个 cookie,只要浏览器打开,它就会一直存在,并在它关闭时过期 - 这就是我想要的。
- 如果活动 URL 在地址栏中,则
form-page.php中的“if”语句返回 true,content-deluxe-cookie-tracking.php加载,输入value="<?php echo $uriSegments3 = $_SESSION['uriName']; ?>"是 cookie 名称。 - 但是,如果活动在另一个页面上并且用户进入没有活动 URL 的表单页面,则
form-page.php中的“if”语句返回 false,content-deluxe-cookie-tracking.php未加载 - 我已检查以确保 cookie 存在。
所以,例如:
www.mysitename.com/form-page/?UTM_keyword=field%20service%20software_phrase&UTM_source=Paid%20Search&gclid=EAIaI
有效,但是:
www.mysitename.com/form-page/
不起作用,即使 cookie 被设置在另一个页面上,例如:
www.mysitename.com/another-page/?UTM_keyword=field%20service%20software_phrase&UTM_source=Paid%20Search&gclid=EAIaI
【问题讨论】:
-
现在我正在查看 stackoverflow.com/questions/27758053/... 我想我需要: session_start();在 header.php 的开头,然后在 content.php 中,我需要测试 $_SESSION["uriName"]) 是否为真,而不是查看 cookie 是否存在。为 uriName 创建一个会话并在整个站点上跟踪它就可以了。我的最终解决方案不会包含 cookie。
标签: php wordpress cookies input google-ads-api