J'ai un site dans lequel des personnes y seront envoyées avec diverses chaînes de requête de code promotionnel (qui changeront tout le temps), c'est-à-dire www.example.com/?source=emailad
Comment pourrais-je capturer la chaîne de requête, puis l'ajouter à toutes les URL du site.
J'ai cherché pendant une heure et ai trouvé comment capturer une chaîne de requête et comment ajouter une valeur connue à un href, mais pas comment capturer une chaîne inconnue et l'ajouter. J'ai besoin de tout capturer de la? et ajoutez-le à une URL, quelle que soit la chaîne.
Merci pour toute aide!
Le $_GET
global stocke toutes les entrées de chaîne de requête, vous devriez pouvoir l'utiliser. Pour ce qui est de les ajouter aux URL, vous pouvez ajouter un crochet au filtre post_content
pour mettre à jour les liens du contenu de l'article/de la page, ainsi que des points d'ancrage sur les différents filtres à permalien (par exemple page_link
, post_link
, etc.).
Personnellement, l’approche des filtres nécessitera beaucoup de travail pour vous assurer de couvrir tous les liens sur le site. Je suggère plutôt que vous utilisiez javascript pour les mettre à jour tous au chargement de la page. Voici comment vous pouvez le faire dans 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);
});
Le location.search
contient la chaîne de requête de la page. La fonction met à jour TOUS LES liens trouvés, vous pouvez donc l’affiner pour ne couvrir que les liens relatifs à votre site (testez si this.href
commence par l’URL de la maison de votre site.
Si vous avez des liens qui peuvent être créés après le chargement de la page, vous devrez le retravailler dans un événement de clic qui remplace l'attribut href
avant son déclenchement.
Je ne sais pas pourquoi vous devez le faire, mais selon le but recherché, il peut être plus simple d’avoir un code personnalisé qui stocke les données dans leur $_SESSION
afin qu’ils soient mémorisés comme étant venus sur le site par courrier électronique, sans avoir la chaîne de requête préservée partout.
if(isset($_SESSION['source'])){
$_SESSION['was_referred'] = true;
}
if(isset($_SESSION['was_referred'])){
// do stuff
}