Reindirizzare gli utenti non loggati da pagine specifiche
Ho visto questa domanda postata in precedenza ma non rispondeva esattamente a ciò che voglio ottenere.
In sostanza quello che voglio è: Se l'utente non è loggato E si trova su -questa pagina- OPPURE -questa pagina- OPPURE -questa pagina, reindirizzarlo a -questa pagina- (che è una pagina di registrazione personalizzata)
Sto modificando questo pezzo di codice, ma non funziona. Apprezzerò qualsiasi tipo di guida.
<?php
function redirect_non_logged_in(){
// se l'utente non è loggato e si trova su una di queste pagine
if( !is_user_logged_in() && is_page( array( 250, 253 ) ) ) {
// Questo reindirizza alla pagina di login personalizzata
wp_redirect(site_url('/registrazione-utente'));
exit();
}
}
add_filter('get_header','redirect_non_logged_in');
?>

La tua funzione va bene, ma 'get_header'
è troppo tardi.
Usa invece template_redirect
:
add_action( 'template_redirect', function() {
if ( is_user_logged_in() || ! is_page() ) return;
$restricted = array( 250, 253 ); // tutte le tue pagine con restrizioni
if ( in_array( get_queried_object_id(), $restricted ) ) {
wp_redirect( site_url( '/registrazione-utente' ) );
exit();
}
});
Assicurati di non includere l'ID della pagina 'registrazione-utente' nell'array $restricted
altrimenti avrai un redirect infinito...

Scusa se interrompo, ma invece di replicare la domanda, te la chiedo qui. Uso questo codice leggermente modificato basato sulla tua risposta: add_action( 'template_redirect', function() { if ( !is_page('login') || !is_user_logged_in() ) { wp_redirect( site_url( '/login', 301 ) ); exit(); }});
, tuttavia, continuo a ricevere il loop di reindirizzamento. Puoi indicarmi cosa c'è che non va?

Il tuo problema è che login non è una pagina, quindi is_page('login')
non potrà mai essere vero. Sapere se sei nella pagina di login non è immediato in WordPress, vedi questa risposta per sapere come fare. @FrederickAndersen

Installa il plugin Page Restrict https://da.wordpress.org/plugins/pagerestrict/
Nelle impostazioni scegli "login form show no"
Inserisci il link nel messaggio di restrizione: <a href="https://your login page/">Login</a>
per visualizzare questa pagina/articolo
