Come reindirizzare gli utenti non registrati a una pagina specifica?


16

Come reindirizzare gli utenti non registrati che richiedono una pagina / URL specifici a un'altra pagina / URL e visualizzare un messaggio come "solo per i membri". So che è abbastanza facile codificare usando la funzione! Is_user_logged_in () ma non so come codificarlo perché sono un principiante di WordPress. Cura di dirmi il file per inserire anche il codice.

Risposte:


30

Ecco 2 esempi che dovrai modificare leggermente per farlo funzionare per le 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('add page slug or ID here') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php' ) {

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

Inseriscilo nel file delle funzioni del tema figlio, modifica l'ID pagina o la lumaca e l'URL di reindirizzamento.

Puoi 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/your-page/', 301 ); 
  exit;
    }
}

È possibile aggiungere il messaggio direttamente alla pagina o se si desidera visualizzare il messaggio per tutti gli utenti non connessi, aggiungerlo al codice .

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


Grazie per la risposta che mi è piaciuta 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

Utilizzare l'ID pagina o Slug qui, non l'URL mydomain.com/participate codex.wordpress.org/Conditional_Tags
Brad Dalton

is_page ('participi')
Brad Dalton,

9

Questo sarebbe meglio:

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

// continue as normal for authenticated users

Quello che fa è reindirizzare l'utente alla pagina di accesso. Una volta effettuato l'accesso, l'utente viene reindirizzato alla pagina protetta a cui stava tentando inizialmente di accedere.

Documentazione qui:

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


4

Come possiamo dirti dove metterlo se non ci hai detto cosa e dove vuoi visualizzarlo? Interi post? Pagine? Parti personalizzate di pagine? Scusa ... immagino che la mia sfera di cristallo non funzioni ancora oggi.

Dato che lo sei e ti cito: "un novizio di wordpress" dovresti piuttosto imparare, piuttosto che chiedere una risposta diretta.

Per quanto riguarda dove dovresti leggere il link di riferimento 1. Questo ti dirà in quale file devi inserirlo.

Per quanto riguarda come farlo, dovresti prima leggere i link di riferimento 2 e 3.

Nel complesso dovrebbe assomigliare a questo:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'For members only';
}

Naturalmente il codice sopra deve andare in un ciclo . Puoi costruirlo nel modo più complesso o semplice che desideri. Ad esempio, invece di un semplice testo, se non hai effettuato l'accesso puoi visualizzare l'intero modulo di iscrizione, ad esempio o - come suggerirei - una schermata divisa in cui l'utente può accedere (poiché l'utente può avere un account ma ha dimenticato di accedere) o iscriversi (se non ne ha uno).

  1. Gerarchia dei modelli
  2. Tag condizionali
  3. Il cappio

Aggiunto dopo i commenti qui sotto:

Per reindirizzare utilizzare nuovamente headercon wp_login_url-, controllare i riferimenti 1 e 2 seguenti:

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

Riferimento:

  1. Intestazione - PHP
  2. wp_login_url

In realtà non conosco la funtction su wordpress che restituisce l'URL richiesto o il permalink. E per quanto riguarda il messaggio dispaly, lascialo, voglio solo reindirizzarli quando richiedono un determinato URL senza essere registrati.
user3187719

posso farlo con $ pagenow?
user3187719

@ user3187719 ha modificato la mia risposta originale e ha aggiunto la soluzione al reindirizzamento. PS. $pagenow? Stai cercando di uccidere una mosca con un cannone sicuro che funzionerà, ma perché è così complesso? Mantienilo semplice. PS2: scopri PHP e WP Codex.
Borek,

4

Non è possibile reindirizzare a una pagina specifica, ma ogni utente non connesso verrà reindirizzato alla schermata di accesso.

<?php auth_redirect(); ?>

Riferimento Wordpress: auth_redirect()

Solo per citare un'altra soluzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.