Verificare se un utente ha effettuato l'accesso e reindirizzarlo a una pagina diversa
Sto creando un sito riservato ai membri che richiede agli utenti di essere loggati per utilizzare il sito.
La homepage è visibile pubblicamente. Nella homepage, vorrei inserire una funzione per reindirizzare gli utenti a una pagina interna del sito se hanno già effettuato l'accesso.
Il codice che ho provato
<?php if (is_user_logged_in() ) {
wp_redirect('dashboard');
exit;
}
?>
Mi restituisce un errore "headers already sent". Il codice è posizionato all'inizio del mio file php.
Cosa sto sbagliando?

Non sono sicuro se hai semplificato per esempio, ma assicurati di utilizzare l'URL completo nella chiamata wp_redirect()
.
Inoltre, invece di inserirlo nel template, penso sarebbe più appropriato eseguirlo tramite l'hook template_redirect
.

La mia soluzione è wp_redirect ( home_url("/dashboard") );
, e ho inserito questo codice nella riga 1 del template. Anche se non ho familiarità con gli hook, probabilmente hai ragione. Perché?

@javy template_redirect
è semanticamente il posto giusto nel codice come "WP sa cosa deve iniziare a caricare e mostrare, ma puoi fargli cambiare idea". L'inizio del template è "stiamo già caricando questa cosa". Se non vuoi ciò che c'è nel template, non c'è motivo di arrivare fino a quel punto nel processo.

<?php if (is_user_logged_in() ) {
wp_redirect ( home_url("/dashboard") ); // Reindirizza l'utente loggato alla dashboard
exit;
}
?>
È quello che ho ottenuto, e funziona. Inoltre, penso di aver commesso un errore inserendo questo sotto
<?php
/*Template Name: Home*/
?>
Il nuovo codice è sulla riga 1 e funziona.
