Cum să redirecționezi utilizatorii neautentificați către o pagină specifică?

30 ian. 2014, 22:23:38
Vizualizări: 151K
Voturi: 26

Cum să redirecționezi utilizatorii neautentificați care accesează o anumită pagină/URL către o altă pagină/URL și să afișezi un mesaj precum "doar pentru membri". Știu că este destul de ușor să codezi folosind funcția !is_user_logged_in() dar nu știu cum să o implementez deoarece sunt începător în WordPress. Puteți să-mi spuneți și în ce fișier să pun codul.

0
Toate răspunsurile la întrebare 4
3
43

Iată 2 exemple pe care va trebui să le modificați ușor pentru a le face să funcționeze conform nevoilor dumneavoastră specifice.

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;
   }
}

Puneți acest cod în fișierul functions al temei child, schimbați ID-ul sau slugul paginii și URL-ul de redirecționare.

De asemenea, puteți folosi codul de genul acesta:

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;
    }
}

Puteți adăuga mesajul direct pe pagină sau, dacă doriți să afișați mesajul pentru toți utilizatorii nelogati, adăugați-l în cod.

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

31 ian. 2014 10:03:01
Comentarii

Mulțumesc pentru răspuns, am făcut asta `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; } }` Dar nu funcționează

user3187719 user3187719
31 ian. 2014 11:15:58

Folosește ID-ul paginii sau slug-ul aici, nu URL-ul http://mydomain.com/participate http://codex.wordpress.org/Conditional_Tags

Brad Dalton Brad Dalton
31 ian. 2014 11:22:50

is_page('participate')

Brad Dalton Brad Dalton
31 ian. 2014 11:23:28
0
23

Acest lucru ar fi mai bine:

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

// continuă normal pentru utilizatorii autentificați

Acest cod redirecționează utilizatorul către pagina de autentificare. După ce se autentifică, utilizatorul este redirecționat înapoi la pagina securizată pe care încerca să o acceseze inițial.

Documentația aici:

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

17 nov. 2017 18:00:57
0

Nu poți redirecționa către o pagină specifică, dar fiecare utilizator care nu este autentificat va fi redirecționat către ecranul de Log-In.

<?php auth_redirect(); ?>

Referință Wordpress: auth_redirect()

Doar pentru a menționa o altă soluție.

13 dec. 2014 15:38:46
3

Consultă linkul de referință 1 de mai jos. Acesta îți va spune ce fișier trebuie să editezi.

Referințele din linkurile 2 și 3 de mai jos îți vor oferi informații de bază despre fluxul de control.

În general, ar trebui să arate cam așa:

if ( is_user_logged_in() ) {
    the_content();
} else {
    echo 'Doar pentru membri';
}

Desigur, codul de mai sus trebuie introdus într-o buclă. Poți să-l construiești atât de complex sau simplu cum dorești. De exemplu, în loc de un simplu text dacă utilizatorul nu este autentificat, poți afișa un întreg formular de înregistrare sau - așa cum aș sugera eu - un ecran împărțit unde utilizatorul poate să se autentifice (dacă are deja un cont dar a uitat să se logheze) sau să se înregistreze (dacă nu are un cont).

  1. Ierarhia șabloanelor
  2. Etichete condiționale
  3. Bucla

Adăugat după comentariile de mai jos:

Pentru redirecționare folosește header cu wp_login_url - din nou, verifică referințele 1 și 2 de mai jos:

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

Referințe:

  1. Header - PHP
  2. wp_login_url
30 ian. 2014 23:57:31
Comentarii

De fapt, nu cunosc funcția în WordPress care returnează URL-ul solicitat sau permalinkul. În ceea ce privește mesajul de afișare, lasă-l, vreau doar să-i redirecționez atunci când solicită un anumit URL fără să fie autentificați.

user3187719 user3187719
31 ian. 2014 06:14:38

pot să fac asta cu $pagenow?

user3187719 user3187719
31 ian. 2014 06:53:25

@user3187719 a editat răspunsul meu original și a adăugat soluția pentru redirecționare. PS. $pagenow? Încerci să omori un țânțar cu un tun, sigur că va funcționa, dar de ce să faci lucrurile atât de complexe? Păstrează-le simple. PS2: Învață PHP și WP Codex.

Borek Borek
31 ian. 2014 17:17:54