这个$_GET
全局存储所有查询字符串条目,您应该能够使用它。至于将它们附加到URL,可以在post_content
过滤以更新帖子/页面内容中的任何链接,以及各种permalink过滤器上的挂钩(例如。page_link
, post_link
, 等等)。
就个人而言,过滤器方法需要做大量工作才能确保覆盖网站上的所有链接。我建议您在页面加载时使用javascript来更新它们。下面是如何在jQuery中执行此操作
$(\'a[href]\').each(function(){
var href = $(this).attr(\'href\');
if(href.indexOf(\'?\') !== -1){
// Query string exists, append current query string
href += \'&\' + location.search.replace(/^\\?/, \'\');
}else{
// No query string yet, add it
href += location.search;
}
$(this).attr(\'href\', href);
});
The
location.search
包含页面的查询字符串。该函数将更新找到的任何链接,因此您可能希望对其进行优化,以仅覆盖与您的站点相关的链接(如果
this.href
从站点的主url开始。
如果页面加载后可能会创建任何链接,则需要将其重新编辑为click事件,以替换href
属性激发之前。
我不知道为什么需要这样做,但根据用途的不同,只需使用一些自定义代码将数据存储在$_SESSION
这样,他们就可以通过电子邮件访问站点,而不必到处保留查询字符串。
if(isset($_SESSION[\'source\'])){
$_SESSION[\'was_referred\'] = true;
}
if(isset($_SESSION[\'was_referred\'])){
// do stuff
}