私はさまざまなプロモーションコードのクエリ文字列を含む人々がそこに送られるサイトを持っています(それは常に変化します)、すなわちwww.example.com/?source=emailad
クエリ文字列をどのように取得してから、サイト内のすべてのURLに追加するのですか。
1時間検索したところ、クエリ文字列を取得する方法と、既知の値をhrefに追加する方法がわかったが、未知の文字列を取得して追加する方法は見つからなかった。私はただからすべてをキャプチャする必要がありますか?文字列が何であるかに関係なく、onにしてURLに追加します。
助けてくれてありがとう!
$_GET
グローバルはすべてのクエリ文字列エントリを格納します、あなたはそれを使うことができるはずです。それらをURLに追加することに関しては、投稿/ページコンテンツ内のリンクを更新するためのpost_content
フィルタへのフック、およびさまざまなパーマリンクフィルタ上のフック(例えば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);
});
location.search
には、ページのクエリ文字列が含まれています。この関数は見つけたリンクをすべて更新するので、あなたのサイトに関連するリンクのみをカバーするようにそれを改良したいかもしれません(this.href
があなたのサイトのホームURLで始まっているかどうかテストしてください)。
ページの読み込み後に作成される可能性のあるリンクがある場合は、それを起動する前にhref
属性を置き換えるclickイベントに修正する必要があります。
なぜこれが必要なのかよくわかりませんが、目的によっては、データを$_SESSION
に格納するカスタムコードを用意して、電子メールでサイトにアクセスしたことを覚えておく方が簡単な場合があります。クエリ文字列がどこにでも保存されている。
if(isset($_SESSION['source'])){
$_SESSION['was_referred'] = true;
}
if(isset($_SESSION['was_referred'])){
// do stuff
}