Cum să redirecționezi utilizatorii neautentificați către o pagină specifică?
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.

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.

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ă

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

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

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.

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

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.
