Come reindirizzare gli utenti non loggati a una pagina specifica?

30 gen 2014, 22:23:38
Visualizzazioni: 151K
Voti: 26

Come reindirizzare gli utenti non loggati che richiedono una pagina/URL specifica verso un'altra pagina/URL e mostrare un messaggio del tipo "solo per membri". So che è abbastanza facile da programmare usando la funzione !is_user_logged_in() ma non so come codificarlo perché sono nuovo su WordPress. Potreste dirmi anche in quale file inserire il codice.

0
Tutte le risposte alla domanda 4
3
43

Ecco 2 esempi che dovrai modificare leggermente per adattarli alle tue esigenze specifiche.

add_action( 'admin_init', 'redirect_non_logged_users_to_specific_page' );

function redirect_non_logged_users_to_specific_page() {

if ( !is_user_logged_in() && is_page('inserisci qui lo slug o ID della pagina') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {

wp_redirect( 'http://www.example.dev/pagina/' ); 
    exit;
   }
}

Inserisci questo nel file functions del tuo child theme, modifica l'ID o lo slug della pagina e l'URL di reindirizzamento.

Potresti anche usare un codice come questo:

add_action( 'template_redirect', 'redirect_to_specific_page' );

function redirect_to_specific_page() {

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

wp_redirect( 'http://www.example.dev/tua-pagina/', 301 ); 
  exit;
    }
}

Puoi aggiungere il messaggio direttamente alla pagina o, se vuoi mostrare il messaggio per tutti gli utenti non loggati, aggiungilo al codice.

http://codex.wordpress.org/Function_Reference/wp_redirect

31 gen 2014 10:03:01
Commenti

Grazie per la tua risposta, ho fatto così `add_action('template_redirect', 'redirect_to_specific_page');

function redirect_to_specific_page() {

if ( is_page('http://mydomain.com/participate') && !is_user_logged_in()) {

wp_redirect('http://mydomain.com/login', 301); exit; } }` Ma non funziona

user3187719 user3187719
31 gen 2014 11:15:58

Usa l'ID o lo slug della pagina qui, non l'URL http://mydomain.com/participate http://codex.wordpress.org/Conditional_Tags

Brad Dalton Brad Dalton
31 gen 2014 11:22:50

is_page('participate')

Brad Dalton Brad Dalton
31 gen 2014 11:23:28
0
23

Questo sarebbe meglio:

if ( !is_user_logged_in() ) {
    auth_redirect();
} 

// continua normalmente per gli utenti autenticati

Questo codice reindirizza l'utente alla pagina di login. Una volta effettuato l'accesso, l'utente viene reindirizzato automaticamente alla pagina protetta che stava tentando di raggiungere inizialmente.

Documentazione qui:

https://codex.wordpress.org/Function_Reference/auth_redirect

17 nov 2017 18:00:57
0

Non puoi reindirizzare a una pagina specifica, ma ogni utente non loggato verrà reindirizzato alla schermata di accesso.

<?php auth_redirect(); ?>

Riferimento WordPress: auth_redirect()

Solo per menzionare un'altra soluzione.

13 dic 2014 15:38:46
3

Consulta il link di riferimento 1 qui sotto. Questo ti indicherà quale file devi modificare.

I riferimenti nei link 2 e 3 qui sotto ti forniranno informazioni sul flusso di controllo.

Nel complesso dovrebbe apparire più o meno così:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'Solo per membri';
}

Ovviamente il codice sopra deve essere inserito in un loop. Puoi renderlo più complesso o semplice come preferisci. Ad esempio, invece di un semplice testo se non loggato, puoi mostrare un intero modulo di registrazione oppure - come suggerirei - una schermata divisa dove l'utente può accedere (nel caso abbia già un account ma si sia dimenticato di effettuare il login) o registrarsi (se non ne ha uno).

  1. Gerarchia dei Template
  2. Tag Condizionali
  3. Il Loop

Aggiunto dopo i commenti qui sotto:

Per reindirizzare usa header con wp_login_url - ancora una volta, controlla i riferimenti 1 e 2 qui sotto:

if ( is_user_logged_in() ) {
    the_content();
} else {
    header('Location: ' . wp_login_url());
}

Riferimenti:

  1. Header - PHP
  2. wp_login_url
30 gen 2014 23:57:31
Commenti

In realtà non conosco la funzione su WordPress che restituisce l'URL richiesto o il permalink. Per quanto riguarda il messaggio di visualizzazione, lascia perdere, voglio solo reindirizzarli quando richiedono un certo URL senza essere loggati.

user3187719 user3187719
31 gen 2014 06:14:38

Posso farlo con $pagenow?

user3187719 user3187719
31 gen 2014 06:53:25

@user3187719 ha modificato la mia risposta originale e aggiunto la soluzione per il reindirizzamento. PS. $pagenow? Stai cercando di uccidere una mosca con un cannone - sicuramente funzionerà, ma perché complicarsi la vita? Mantienilo semplice. PS2: Impara PHP e il WP Codex.

Borek Borek
31 gen 2014 17:17:54