AdaRaider
AdaRaider

Reputation: 1136

How to keep query string parameters as user navigates through the website

I have a situation where I want to preserve a query string between clicks on my Wordpress website.

E.g. www.mywebsite.com/?utm_source=mysource

When navigating from this link to another page of the website that query string should persist.

E.g. www.mywebsite.com/anotherpage/?utm_source=mysource

So I decided one easy way to do this would be to modify the javascript so that my function is fired when a click on an anchor tag occurs.

//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;  
  });

However this doesn't work for other elements on the page like buttons which are not anchor tags but still contain hrefs that modifiy the window location when they are clicked. For example in the php scripts of the theme there is code such as:

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

I could implement another function that implements the same behavior for button elements but I am concerned that whenever another element is added I will have to check for a new type. Is there a better way to ensure that whenever the window location is changed my query string persists?

FYI: I am not allowed to put the information in a cookie which is another way I thought of keeping track of the parameters.

Upvotes: 0

Views: 3083

Answers (2)

suhail khan
suhail khan

Reputation: 1

Try this to append query paramters in all anchor tags:-

    $('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);
              }
        }
   });

Upvotes: 0

Loren Rosen
Loren Rosen

Reputation: 125

several suggestions
client side
In using jquery, it might be easier to just find clickable elements, or have the WordPress theme add css classes, if useful ones aren't there already.

server side
In WordPress, use sessions (but see below), and a rewrite or redirect rule using add_query_arg().
Note about sessions and WordPress: You can't rely on PHP sessions; instead use the database, perhaps via an existing plugin like WP Session Manager or WordPress Native PHP Sessions.

Upvotes: 2

Related Questions