Redirecționează utilizatorii nelogati dacă sunt pe o anumită pagină

19 mar. 2014, 02:54:20
Vizualizări: 17.4K
Voturi: 1

Am văzut această întrebare postată anterior, dar nu exact pentru ceea ce încerc să realizez.

În esență, ceea ce vreau este: Dacă utilizatorul nu este logat ȘI se află pe -această pagină- SAU -această pagină- SAU -această pagină, redirecționează-l către -această pagină- (care este o pagină personalizată de înregistrare)

Modific acest fragment de cod, dar nu funcționează. Apreciez orice fel de îndrumare.

<?php
function redirect_non_logged_in(){
  // dacă utilizatorul nu este logat și se află pe aceste pagini
  if( !is_user_logged_in() && is_page( array( 250, 253 ) ) ) { 
    // Aceasta redirecționează către pagina de login personalizată.
    wp_redirect(site_url('/inregistrare-utilizator'));
    exit();
  }
}
add_filter('get_header','redirect_non_logged_in');
?>
0
Toate răspunsurile la întrebare 2
3

Funcția ta este în regulă, dar 'get_header' este prea târziu.

Folosește template_redirect în schimb:

add_action( 'template_redirect', function() {

  if ( is_user_logged_in() || ! is_page() ) return;

  $restricted = array( 250, 253 ); // toate paginile tale restricționate

  if ( in_array( get_queried_object_id(), $restricted ) ) {
    wp_redirect( site_url( '/user-registration' ) ); 
    exit();
  }

});

Asigură-te că nu incluzi ID-ul paginii 'user-registration' în array-ul $restricted altfel vei întâmpina o redirecționare infinită...

19 mar. 2014 07:17:46
Comentarii

Chiar apreciez. Funcționează.

rohn rohn
20 mar. 2014 08:07:31

Scuze că întrerup, dar în loc să repet întrebarea, aș întreba aici. Folosesc acest cod ușor modificat bazat pe răspunsul tău: add_action( 'template_redirect', function() { if ( !is_page('login') || !is_user_logged_in() ) { wp_redirect( site_url( '/login', 301 ) ); exit(); }});, totuși, tot primesc bucla de redirecționare. Poți să-mi arăți unde e problema?

Frederick Andersen Frederick Andersen
13 aug. 2014 04:52:45

Problema ta este că login nu este o pagină, așa că is_page('login') nu poate fi niciodată adevărat. A afla dacă ești pe pagina de login nu este simplu în WordPress, vezi acest răspuns pentru a afla cum se face. @FrederickAndersen

gmazzap gmazzap
13 aug. 2014 15:51:17
0
-3

Instalați extensia Page Restrict https://da.wordpress.org/plugins/pagerestrict/

În setări, alegeți opțiunea "login form show" ca "no"

introduceți link în mesajul de restricție: <a href="https://pagina-dvs-de-login/">Autentificare</a> pentru a vizualiza această pagină/postare

7 nov. 2017 14:32:49