Hai modificato l’url di una pagina ed hai bisogno di effettuare un redirect da una pagina WordPress ad un’altra?
Hai un elenco di pagine ma vuoi che la pagina padre non sia raggiungibile effettuando un redirect verso una delle sottopagine?
Ecco come effettuare un redirect senza utilizzare un plugin.
Introduzione
In questo articolo vedremo come effettuare dei redirect utilizzando:
- un template di pagina
- i campi personalizzati della pagina
- la funzione di wordpress wp_redirect()
Perché creare dei redirect di pagina?
L’utilità di creare dei redirect potrebbero essere molteplici. Potrebbe essere utile in caso di un cambio di indirizzo di una pagina per migliorare l’indicizzazione, per rendere una pagina non più raggiungibile o ad esempio se è una pagina padre (contenitore di sottopagine) senza contenuto.
In tutti questi casi il redirect di pagina è di fondamentale importanza.
Ma passiamo ai fatti.
Creazione del Template di pagina
Come prima cosa dobbiamo creare il template da associare alla pagina che vogliamo reindirizzare. Creeremo quindi nella cartella del tema attivo un file chiamato tpl_301.php
<?php /** * Template Name: 301 Template * Description: Template 301 redirect * * @package WordPress * @Author dot4all */ $pageredirect = get_post_meta( get_the_ID(), '301', true ); wp_redirect( home_url().$pageredirect, 301 ); ?>
Suggerimento
In questo esempio abbiamo utilizzato un redirect di tipo 301 (la pagina è stata spostata permanentemente). Nel caso in cui il redirect è temporaneo il codice di stato HTTP da utilizzare è 302 (quello di default della function wp_redirect()).
Effettuiamo il redirect
una volta creato il template, possiamo effettuare il redirect inserendo nella pagina il custom field ed associando il template creato.
Aggiungiamo il Campo personalizzato
All’interno della pagina cerchiamo il box “Campi personalizzati” ed inseriamo un nuovo valore con Nome:”301″ e valore:”/pagina-di-destinazione/” (senza virgolette)
Associamo il template alla pagina
Ora l’unica cosa da fare è associare il template alla pagina quindi, nella sezione Attributi Pagina selezioniamo il template “301 Template”. e completiamo salvando le modifiche. Ora non ci rimane che verifica il corretto funzionamento del redirect 301.
Richiamando l’url della pagina a cui è stato associato il campo personalizzato 301 es. www.nomesito.it/pagina-mossa-permanentemente verrete redirezionati alla pagina www.nomesito.it/pagina-di-destinazione/
Ora in ogni singola pagina, inserendo il campo personalizzato 301:/url-nuova-pagina, verrà effettuato un redirect verso questa nuova pagina…ma non dimenticatevi di associare il template altrimenti non succederà nulla…
DETTAGLI
Livello: medio
Compatibilità: testato su WP versione 3.9.1
Funziona!
ho utilizzato solo questa stringa di codice:
Grazie.
ciao Flavio,
se vuoi utilizzar sempre il wp_redirect inserisci la url del sito esterno come argomento (https://developer.wordpress.org/reference/functions/wp_redirect/)
Hai provato? non ti funziona?
Facci sapere
Ciao, molto utile e funziona!
Sai invece come utilizzare la stessa funzione per reindirizzare la singola pagina a un sito esterno?
Ho provato con Htaccess, ma oltre alla pagina rindirizza anche la cartella… 🙁
Ciao Samantha,
devi creare un file .php con il nome indicato nell’articolo e ci inserisci il codice allegato. Inserisci il file all’interno della cartella: wp-content/themes/nome_tuo_tema.
Quando apri la pagina alla quale vuoi applicare il redirect dovrai scegliere come template quello “Template 301” e definire il campo personalizzato come da articolo.
Se hai bisogno di altri dettagli scrivimi pure e ti aiuto 😉
Buona giornata 🙂
Ciao, non ho capito come si fa a creare il template, qualcuno può spiegarmelo?
CIao, come faccio a fare dei redirect per pagine php?
ho alcune pagine w w w.areamare.org/wo.php che sono linkate da siti hackerati e non riesco a toglierle…
il redirect per pagine php non funziona con nessuno
grazie
ciao! come reindirizzare gli utenti non loggati a una pagina login?
mentre invece quelli loggati sono abilitati a vederne il contenuto.
grazie!
Ciao Alessandro,
usando il codice di esempio non funzionerà dato che abbiamo impostato come parametro di redirect home_url(). Se modifichi il codice togliendo home_url() e mettendo l’url assoluto nel post_meta, potrai effettuare redirect anche su pagine esterne. Quindi il codice diventerà wp_redirect( $pageredirect, 301 );
Ciao!
Funziona per un redirect da wordpress.com ad un selfhosted?
Grazie.