is_user_logged_in funktioniert nicht, um nur abgemeldete Benutzer umzuleiten

Also habe ich den Code unten in meiner functions.php Datei. Es funktioniert für ausgeloggte Benutzer, aber es leitet auch Benutzer um, die angemeldet sind. Kann jemand helfen?

add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( is_paged() || is_author() || is_single() && ! is_user_logged_in() ) { wp_redirect( 'http://www.exampleblog.net/members-only/', 301 ); exit; } } 

Ich benutze dies, um alle ausgeloggten Benutzer auf eine Seite umzuleiten, auf der sie ihnen sagen, dass sie eingeloggt sein müssen, um andere Seiten zu sehen (Seiten 2, 3, usw.). Auch wenn sie nicht die Autorenseite und Archive anzeigen Name des Autors).

Solutions Collecting From Web of "is_user_logged_in funktioniert nicht, um nur abgemeldete Benutzer umzuleiten"

Sie müssen die ersten drei || Bedingungen in zusätzlichen Klammern, so dass sie zuerst vor der letzten && Bedingung ausgewertet werden:

Psuedocode Beispiel:

  here here ↓ ↓ if ( (condition || condtion || condition) && ! condition ) { //do business logic... } 

Das bedeutet jetzt, dass:

Wenn ONE von is_paged() ODER is_author() ODER is_single() true Dann bewerten Sie die zweite Bedingung ! is_user_logged_in() ! is_user_logged_in()

In Ihrem ursprünglichen Code:

Ohne zusätzliche Klammern, die die ersten drei Bedingungen umschließen , wenn eine dieser vier Bedingungen true ist, würden Sie Ihren Benutzer redirect, unabhängig davon, ob er eingeloggt ist oder nicht.

Endgültiger Code mit zusätzlichen Klammern:

 add_action( 'template_redirect', 'redirect_to_specific_page' ); function redirect_to_specific_page() { if ( (is_paged() || is_author() || is_single()) && ! is_user_logged_in() ) { wp_redirect( 'http://www.exampleblog.net/members-only/', 301 ); exit; } }