it-swarm.com.de

So erfassen Sie eine variable Abfragezeichenfolge und hängen Sie an alle URLs einer Wordpress-Site an

Ich habe eine Site, auf der Leute mit verschiedenen Promo-Code-Abfragezeichenfolgen (die sich ständig ändern) dorthin geschickt werden, d. H. Www.example.com/?source=emailad

Wie würde ich die Abfragezeichenfolge erfassen und dann an alle URLs in der Site anhängen?.

Ich habe eine Stunde lang gesucht und herausgefunden, wie man eine Abfragezeichenfolge erfasst und einen bekannten Wert an eine href anfügt, aber nicht, wie man eine unbekannte Zeichenfolge erfasst und anhängt. Ich muss nur alles von der erfassen? on und hängen Sie es an eine URL an, unabhängig davon, um welche Zeichenfolge es sich handelt.

Danke für jede Hilfe!

2
adrian collins

Das globale $_GET speichert alle Einträge der Abfragezeichenfolge. Sie sollten in der Lage sein, diese zu verwenden. Wenn Sie sie an URLs anhängen möchten, können Sie dem post_content-Filter einen Hook hinzufügen, um alle Links im Inhalt des Posts/der Seite zu aktualisieren, sowie Hooks für die verschiedenen Permalink-Filter (z. B. page_link, post_link usw.).

Persönlich erfordert der Filteransatz viel Arbeit, um sicherzustellen, dass Sie alle Links auf der Website verdecken. Ich schlage stattdessen vor, dass Sie Javascript verwenden, um sie alle beim Laden der Seite zu aktualisieren. Hier erfahren Sie, wie Sie dies in jQuery tun können

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

Der location.search enthält die Abfragezeichenfolge der Seite. Die Funktion aktualisiert alle gefundenen Links, sodass Sie sie möglicherweise so verfeinern möchten, dass sie nur Links abdeckt, die sich auf Ihre Site beziehen (testen Sie, ob this.href mit der Home-URL Ihrer Site beginnt.

Wenn Sie Links haben, die möglicherweise nach dem Laden der Seite erstellt wurden, müssen Sie sie in ein Klickereignis überarbeiten, das das Attribut href ersetzt, bevor es ausgelöst wird.

Ich bin mir nicht sicher, warum Sie dies tun müssen, aber je nach Verwendungszweck kann es einfacher sein, nur einen benutzerdefinierten Code zu haben, in dem Daten in ihrem $_SESSION gespeichert sind, damit sie als über die E-Mail auf die Website gekommen gemeldet werden, ohne die Abfragezeichenfolge überall beibehalten.

if(isset($_SESSION['source'])){
    $_SESSION['was_referred'] = true;
}
if(isset($_SESSION['was_referred'])){
    // do stuff
}
1
Doug Wollison