Wenn der Benutzer NICHT angemeldet ist und die Seiten-ID nicht 6 ist – Redirect to Login

Ich versuche Benutzer basierend auf den folgenden umzuleiten …

Was soweit ich sehen kann sollte funktionieren, aber es ist nicht, es gibt mir eine leere Seite. Das Skript wird von der header.php ausgeführt und ist das erste in der PHP-Datei.

Die erste Regel – Wenn Rolle = Kunde & Seite ist ID 6 dann Umleitung zur Kasse funktioniert ordnungsgemäß und sie werden auf die Checkout-Seite umgeleitet.

Die zweite Regel verhindert, dass sich jemand anmeldet

Die dritte Regel funktioniert ordnungsgemäß

Mache ich etwas falsch?

Solutions Collecting From Web of "Wenn der Benutzer NICHT angemeldet ist und die Seiten-ID nicht 6 ist – Redirect to Login"

BEARBEITEN

Sie verwenden auth_redirect(); Standardmäßig überprüft es, ob ein Benutzer angemeldet ist oder nicht, so dass Sie nicht erneut prüfen müssen, ob ein Benutzer angemeldet ist oder nicht

Wenn dieser Code von einer Seite aufgerufen wird, überprüft er, ob der Benutzer, der die Seite anzeigt, angemeldet ist. Wenn der Benutzer nicht angemeldet ist, werden sie zur Anmeldeseite umgeleitet. Der Benutzer wird so umgeleitet, dass er bei der Anmeldung direkt zu der Seite weitergeleitet wird, auf die er ursprünglich zugreifen wollte.

Du kannst es einfach tun

 if ( ! is_page ( 6 ) ) { auth_redirect(); } 

BEARBEITEN 2

 //If Role = Customer & Page Is ID 6 Then Redirect To Checkout if ( user_can( $current_user, "customer" ) && ! is_page( 6 ) ) 

Dies sind die ersten zwei Zeilen Ihres Codes, überprüfen Sie die erste Zeile der Seite ist ID 6 und überprüfen Sie Zeile 2 ! is_page( 6 ) ! is_page( 6 ) . Finde den Unterschied?

Ihr Code in Zeile 2 sagt, wenn die Seiten-ID NICHT 6 ist

BEARBEITEN 3

Das Skript wird von der header.php ausgeführt und ist das erste in der PHP-Datei

Was meinst du als erstes in der PHP-Datei? Dies wird Ihre Website zerstören. Sie müssen diesen Code mindestens innerhalb des öffnenden body-Tags ( ) , wo er sein sollte

EDIT 4

Seit wir angefangen haben, hat sich einiges geändert :-). Versuchen Sie, Ihre Sequenz neu zu organisieren

 //If Role = Customer & Page Is ID 6 Then Redirect To Checkout if ( user_can( $current_user, "customer" ) && ! is_page( 6 ) ) { wp_redirect(home_url().'/checkout'); exit; }elseif ( user_can( $current_user, "member" ) && is_page( 6 ) { // User role = member and Page ID is 6 redirect to home page wp_redirect(home_url()); exit; } elseif ( ! is_page ( 6 ) && !is_user_logged_in() ) { //If Not Logged in & Page Is Not ID 6 then redirect to login auth_redirect(); //Not sure if this will work. } ?> 

Tue dies nicht in deiner header.php und verschmutze deine Templates, nutze das System, das WordPress dir anbietet und helfe in die template_redirect Aktion wie header.php :

 add_action( 'template_redirect', 'wpse156774_redirect' ); function wpse156774_redirect() { // your code and conditions here } 

Dies kann in Ihre functions.php oder ein Plugin gestellt werden.