Reindirizzare gli utenti non loggati da pagine specifiche

19 mar 2014, 02:54:20
Visualizzazioni: 17.4K
Voti: 1

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');
?>
0
Tutte le risposte alla domanda 2
3

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...

19 mar 2014 07:17:46
Commenti

Lo apprezzo molto. Funziona.

rohn rohn
20 mar 2014 08:07:31

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?

Frederick Andersen Frederick Andersen
13 ago 2014 04:52:45

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

gmazzap gmazzap
13 ago 2014 15:51:17
0
-3

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

7 nov 2017 14:32:49