Come reindirizzare l'utente se non ha effettuato l'accesso a WordPress » Reindirizzamento della pagina

Pubblicato: 2022-01-02

Come reindirizzare se non hai effettuato l'accesso a WordPress Nell'ultimo post, ho dimostrato come verificare se l'utente ha effettuato l'accesso a WordPress. Un motivo comune per cui potresti voler controllare se l'utente di WordPress ha effettuato l'accesso è mostrare pagine diverse in base allo stato di accesso dell'utente di WordPress. Se vuoi reindirizzare gli utenti se non hai effettuato l'accesso a WordPress, puoi ottenerlo aggiungendo uno snippet di codice nel tuo file functions.php come vedrai in questo breve tutorial.

Perché reindirizzare gli utenti in WordPress?

Il reindirizzamento degli utenti è un requisito importante per la maggior parte dei siti WordPress. Ci sono diverse volte in cui potresti voler reindirizzare gli utenti da una pagina all'altra. Ad esempio, puoi reindirizzare gli utenti di WooCommerce dopo il checkout, oppure puoi reindirizzare l'utente dopo la registrazione o reindirizzare l'accesso al sito web.

Reindirizzare se non hai effettuato l'accesso a WordPress è uno dei reindirizzamenti più comuni. Sebbene ci siano plug-in che possono aiutare a gestire il reindirizzamento in WordPress, l'aggiunta di un piccolo snippet che risolve questo problema è una soluzione migliore rispetto a fare affidamento su un plug-in di terze parti.

In questo tutorial, dimostrerò come aggiungere uno snippet nel tuo tema o plug-in che crea il reindirizzamento per gli utenti che non hanno effettuato l'accesso a una pagina di tua scelta.

Passaggi per reindirizzare se non si è effettuato l'accesso a WordPress

Per implementare il reindirizzamento se non hai effettuato l'accesso a WordPress, dovresti seguire i seguenti passaggi:

  1. Accedi al tuo sito WordPress e vai all'editor del tema nel menu aspetto nel menu principale del dashboard.
  2. Apri il file functions.php del tema WordPress attivo. Puoi anche usare CPanel o FTP per accedere al file functions.php del tema attivo. Si trova su questo sentiero – installazione-wp-root/wp-content/themes/active-theme/functions.php
  3. Crea un hook di azione che si aggancia all'hook di inizializzazione dell'amministratore – admin_init , ad esempio add_action('init', 'redirect_if_not_logged_in') . Questo hook ha una funzione di callback che avrà la logica per verificare se l'utente è loggato in WordPress e se non loggato viene reindirizzato alla pagina che desideriamo.
  4. Crea la funzione di callback come accennato in precedenza e aggiungi il codice di conseguenza.
  5. Salva le modifiche e vai al frontend per verificare se gli utenti che non hanno effettuato l'accesso vengono reindirizzati alla pagina che hai aggiunto nel codice.

Dimostriamo come aggiungere il reindirizzamento se l'utente non ha effettuato l'accesso a WordPress. Utilizzerò il tema WordPress predefinito nell'installazione di localhost, ma può funzionare per tutti gli altri siti, indipendentemente dal tema e dall'ambiente di hosting.

Il codice per aggiungere il reindirizzamento può anche richiedere un'altra condizione, come nella maggior parte dei casi quando si desidera limitare il contenuto da utenti non registrati, è necessario verificare due condizioni:

  • Se l'utente ha effettuato l'accesso
  • Se l'utente si trova nella pagina in cui hai il contenuto limitato

Quando queste condizioni sono soddisfatte, dovresti usare la funzione wp_redirect() per reindirizzare l'utente alla pagina di tua scelta.

Funzione WP: wp_redirect()

Questa è una funzione di reindirizzamento di WordPress che può essere utilizzata in temi e plug-in per reindirizzare gli utenti. L'espressione generale di questa funzione è la seguente:

wp_redirect( string $location, int $status = 302, string $x_redirect_by = 'WordPress' )

Come puoi vedere la funzione ha tre parametri che sono i seguenti:

Parametro Descrizione
$location Questo è l'URL a cui vuoi reindirizzare l'utente. Quando utilizzi questa funzione quando l'utente non è loggato, devi fornire l'URL alla pagina che reindirizzeremo l'utente come vedrai nell'esempio di codice
$status Questo è un parametro facoltativo e potresti non vederlo utilizzato spesso, ma è il codice di stato della risposta HTTP da utilizzare. L'impostazione predefinita è "302" e puoi utilizzare 301 per un reindirizzamento permanente. Fai attenzione quando usi questo parametro con l'opzione di reindirizzamento 301.
$x_redirect_by Questa è semplicemente l'applicazione che applica il reindirizzamento e questo cambierà raramente il valore predefinito che è WordPress

Azione di reindirizzamento del modello Se l'utente non ha effettuato l'accesso

Per reindirizzare l'utente che non è loggato in WordPress è ora possibile utilizzare la funzione wp_redirect con il controllo condizionale se l'utente è loggato come segue:

 add_action('template_redirect', 'redirect_if_user_not_logged_in');

funzione redirect_if_user_not_logged_in() {

	if ( is_page('slug || ID') && ! is_user_logged_in() ) { //example può essere is_page(23) dove 23 è l'ID pagina

		wp_redirect( 'http://your-redirect-page-qui '); 
 
     exit;// non dimenticare mai questa uscita poiché è molto importante che wp_redirect() abbia l'uscita / die
   
   }
   
}

Sostituisci lo slug del controllo condizionale con la tua rispettiva pagina e sostituisci anche l'URL di reindirizzamento nel codice sopra e aggiungilo a functions.php per reindirizzare gli utenti che non hanno effettuato l'accesso all'URL di quella pagina.

Azione di reindirizzamento init amministratore se l'utente non ha effettuato l'accesso

In alternativa, puoi agganciare admin_init invece di template_redirect per reindirizzare l'utente se non ha effettuato l'accesso a WordPress.

Il codice dovrebbe essere lo stesso a parte il punto di aggiunta dell'action hook. Il codice dovrebbe essere il seguente:

 add_action('admin_init', 'redirect_if_user_not_logged_in');

funzione redirect_if_user_not_logged_in() {

if ( !is_user_logged_in() && is_page('slug') ) {

      wp_redirect( 'http://your-redirect-page-qui '); 
   
   Uscita;
   }
}

Quando aggiungiamo questo codice al tema WordPress predefinito functions.php e aggiungiamo lo slug per la pagina che vogliamo creare il reindirizzamento e l'URL per la destinazione, funziona perfettamente come puoi vedere:

Come reindirizzare se non hai effettuato l'accesso a WordPress

Pensieri finali

Quando vuoi creare un reindirizzamento se l'utente non ha effettuato l'accesso a WordPress, devi prima verificare se l'utente ha effettuato l'accesso utilizzando il codice che ho condiviso in quel post, quindi utilizzare la funzione wp_redirect() per aggiungere la nuova destinazione in cui gli utenti dovrebbero essere reindirizzati se accedono a una determinata pagina o post.

Questo codice può essere aggiunto al file functions.php del tuo tema oppure puoi usarlo come parte del tuo plugin WordPress personalizzato. È importante ricordare sempre, quando si utilizza la funzione wp_redirect , non bisogna MAI dimenticare di aggiungere l'uscita poiché questa funzione non esce automaticamente.

Come sviluppatore di plugin per WordPress, puoi anche prendere in considerazione un altro plugin di reindirizzamento WordPress wp_safe_redirect() che fornisce un modo migliore per reindirizzare poiché controlla se l'host del parametro $location è consentito.

Articoli simili