WordPress – come reindirizzare sempre l’homepage ad una landing statica
Tutti i giorni ho modo di confrontarmi con i maggiori CMS in uso attualmente e devo cercare soluzioni che accontentino il cliente, ma anche non vadano a danneggiare quello che è stato fatto e in questo caso mi riferisco ai tracciamenti GA4 e per le campagne ADV.
Stavolta mi è stato chiesto di reindirizzare la prima visita di un sito ad una landing page già pronta, creata in una sottocartella, in php e completamente custom, quindi indipendente dalle regole di WordPress con cui era stato costruito il sito a suo tempo.
Per gestire i reindirizzamenti in WordPress e far sì che un utente alla sua prima visita venga reindirizzato alla landing page statica, puoi utilizzare i cookie o la sessione per tracciare se l’utente ha già visitato il sito.
Tabella dei contenuti
Soluzione con Cookie (più affidabile)
Modifica il file functions.php del tema attivo e aggiungi questo codice:
function redirect_first_time_visitors() { if (!isset($_COOKIE['first_visit'])) { setcookie('first_visit', '1', time() + (365 * 24 * 60 * 60), "/"); // Scade dopo 1 anno wp_redirect('/landing/'); // Cambia con il percorso della tua landing page exit; } } add_action('template_redirect', 'redirect_first_time_visitors');
Come funziona?
✅ Controlla se esiste un cookie first_visit
✅ Se non esiste, lo imposta e reindirizza alla landing page
✅ Se esiste, l’utente può navigare normalmente nel sito
Reindirizzamento dalla Landing al Sito
Nella tua pagina landing.html, imposta un pulsante che riporti l’utente al sito principale:
<a href="/" class="btn">Entra nel sito</a>
Se vuoi cancellare il cookie quando l’utente entra nel sito, puoi farlo con JavaScript:
<a href="/" class="btn" onclick="document.cookie='first_visit=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'">Entra nel sito</a>
Altre Opzioni
Se il sito ha caching aggressivo, il metodo con i cookie potrebbe non funzionare subito. In quel caso, puoi usare sessioni PHP invece:
function start_session() { if (!session_id()) { session_start(); } } add_action('init', 'start_session'); function redirect_first_time_visitors() { if (!isset($_SESSION['first_visit'])) { $_SESSION['first_visit'] = true; wp_redirect('/landing/'); exit; } } add_action('template_redirect', 'redirect_first_time_visitors');
Redirezione della sola home del sito
Però questo script redirige l’intero sito alla prima visita e non solo la homepage.
Ecco lo script corretto che assicura che solo la homepage in italiano (/) e in inglese (/en/) rediriga alla landing page alla prima visita.
//Script aggiornato (functions.php) function redirect_first_time_visitors() { // Controlla se il cookie esiste if (!isset($_COOKIE['first_visit']) && (is_front_page() || is_home())) { // Imposta il cookie per 1 anno setcookie('first_visit', '1', time() + (365 * 24 * 60 * 60), "/"); wp_redirect('/landing/'); // Sostituisci con il percorso della tua landing page exit; } } } add_action('template_redirect', 'redirect_first_time_visitors');
Come Funziona?
✅ Controlla se l’utente ha già il cookie first_visit.
✅ Se non ce l’ha, lo imposta e controlla se si trova sulla homepage italiana (/) o inglese (/en/).
✅ Se è su una di queste due homepage, lo reindirizza alla landing.
✅ Se ha già il cookie, può navigare normalmente nel sito.
Redirect di ogni visita della home alla landing
Per questioni di cache, purtroppo non sempre lo script qui sopra funzionava bene. E il fatto che fosse settato il cookie non permetteva al cliente di aver il polso del reindirizzamento. Lo vedeva una volta e poi si chiedeva come mai non lo vedesse più. Quindi ho fatto in modo che ad ogni accesso alla homepage (anche se era seguente alla navigazione di pagine più profonde del sito) venisse rediretta la visita alla landing.
Ecco la versione aggiornata dello script nel functions.php con il wp_redirect() impostato con redirezione della home alla landing:
function redirect_first_time_visitors() { if ((is_front_page() || is_home()) && !isset($_GET["landing"])) { // URL di destinazione $redirect_url = '/landing/'; wp_redirect($redirect_url,307); exit; } } add_action('template_redirect', 'redirect_first_time_visitors');
Come funziona?
✅ Controllo se la pagina in cui atterro è la home o esiste il parametro landing
✅ Se sono in home e non ho il parametro landing allora vengo rediretto alla landing
Va da sè che la landing deve contenere un link alla home del sito in questo modo:
<a href="/?landing=true" class="btn">Entra nel sito</a>
Redirect e query string
Come dicevo all’inizio, il cliente mi ha chiesto una cosa, ma non posso evitare di metterci del mio e capire che se redirigo tutte le visite della home alla landing molto probabilmente lato tracciamenti mi perdo qualcosa.
Effettuare un redirect secco nella home o in ogni pagina del sito comporta che per GA4 ogni visita proviene da diretto, perchè mi toglie tutti i parametri Gclid, UTM o Fbclid o qualsiasi altro parametro impostato nelle campagne di mail marketing, per dirne una.
E’ importante capire che è necessario portare i suddetti parametri anche alla landing, perchè anche nella landing deve essere installato GTM.
Soluzione aggiornata con il mantenimento di UTM e GCLID
function redirect_first_time_visitors() { if ((is_front_page() || is_home()) && !isset($_GET["landing"])) { // Prende i parametri UTM e GCLID $query_params = $_SERVER['QUERY_STRING']; // URL di destinazione $redirect_url = '/landing/'; // Se ci sono parametri, li aggiunge all'URL if (!empty($query_params)) { $redirect_url .= '?' . $query_params; } wp_redirect($redirect_url,307); exit; } } add_action('template_redirect', 'redirect_first_time_visitors');
Come funziona?
✅ Legge i parametri UTM e GCLID dalla query string di $_SERVER[‘QUERY_STRING’]
✅ Li aggiunge alla URL della landing page per mantenerli nel reindirizzamento
✅ Esegue il redirect 307 senza perdere i dati originali
Esempio:
Se un utente arriva su:
👉 https://example.com/?utm_source=google&utm_medium=cpc&gclid=123ABC
verrà reindirizzato a:
👉 https://example.com/landing/?utm_source=google&utm_medium=cpc&gclid=123ABC
🔹 Funziona anche senza parametri: Se non ci sono UTM/GCLID, il redirect avviene normalmente verso /landing/ senza query string vuota.
Test & Debug
Se hai un plugin di caching attivo, potresti dover escludere la homepage dalla cache per garantire che il codice venga eseguito correttamente.
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!