【问题标题】:How to keep query string parameters as user navigates through the website当用户浏览网站时如何保留查询字符串参数
【发布时间】:2019-03-08 04:23:14
【问题描述】:

我有一种情况,我想在我的 Wordpress 网站点击之间保留一个查询字符串。

例如 www.mywebsite.com/?utm_source=mysource

当从这个链接导航到网站的另一个页面时,查询字符串应该保持不变。

例如 www.mywebsite.com/anotherpage/?utm_source=mysource

所以我决定一种简单的方法是修改 javascript,以便在单击锚标记时触发我的函数。

//Ensures that the query string persists between clicks on the site
  $("a").on("click", function (event) {
    event.preventDefault();   
    window.location.href = event.currentTarget.href + window.location.search;  
  });

但是,这不适用于页面上的其他元素,例如不是锚标记但仍包含在单击它们时修改窗口位置的 href。例如在主题的php脚本中有这样的代码:

<button onClick="location.href=www.anotherwebsite.com"</button>

我可以实现另一个对按钮元素实现相同行为的函数,但我担心每当添加另一个元素时,我都必须检查新类型。有没有更好的方法来确保每当更改窗口位置时我的查询字符串仍然存在?

仅供参考:我不允许将信息放在 cookie 中,这是我想到的跟踪参数的另一种方式。

【问题讨论】:

  • 以上内容并不能很好地解决我的问题,因为我必须添加 $referrer = $_SERVER['HTTP_REFERER'];如果我的网站中有很多页面可能涉及修改大量代码并编写大量重复代码
  • 这只是 3 个答案之一。
  • 为什么不使用会话?
  • 我发现了一些较早的问题,建议尝试使用 beforeunload 处理程序拦截位置更改,但我不太确定它的可靠性如何。并且没有什么可以用来拦截任意导航事件的方法——只有在通过浏览器历史 UI 进行导航时才会触发历史更改,而对于正常的链接或按钮单击则不会。 // 似乎有点违反直觉,您不仅要跟踪我对您页面的首次访问,而且要在我进一步浏览该站点时继续嗅探我的 a** ......但是然后有不使用 cookie 的要求......?

标签: javascript php jquery wordpress


【解决方案1】:

几个建议
客户端
在使用 jquery 时,可能更容易只使用find clickable elements,或者让 WordPress 主题添加 css 类,如果还没有有用的类的话。

服务器端
在 WordPress 中,使用会话(但见下文),以及使用 add_query_arg() 的重写或重定向规则。
关于会话和 WordPress 的注意事项:您不能依赖 PHP 会话;而是使用数据库,可能通过 WP Session Manager 或 WordPress Native PHP Sessions 等现有插件。

【讨论】:

    【解决方案2】:

    尝试在所有锚标签中附加查询参数:-

        $('a').each(function() {
        var href = $(this).attr('href');
        var querystring = 
        window.location.href.slice(window.location.href.indexOf('?') + 1);
            if(href && querystring){
               if(querystring.indexOf('=') >= 0) 
                  {
                      $(this).attr('href', href+'?'+querystring);
                  }
            }
       });
    

    【讨论】:

      猜你喜欢
      • 2011-08-13
      • 2012-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 2011-04-15
      相关资源
      最近更新 更多