is_user_logged_in не работает для перенаправления только зарегистрированных пользователей

Поэтому у меня есть код ниже в моем файле functions.php. Он работает для зарегистрированных пользователей, но также перенаправляет пользователей, которые вошли в систему. Может ли кто-нибудь помочь?

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

Я использую это, чтобы перенаправить всех зарегистрированных пользователей на страницу, где он сообщает им, что они должны быть зарегистрированы для просмотра других страниц (Страницы 2, 3 и т. Д. Также для них не просматривать авторскую страницу и архивы при нажатии авторы).

Solutions Collecting From Web of "is_user_logged_in не работает для перенаправления только зарегистрированных пользователей"

Вам нужно обернуть первые три || условия в дополнительных скобках, поэтому они сначала оцениваются ПЕРЕД последним условием && :

Пример Psuedocode:

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

Это означает, что:

Если какой-либо один из is_paged() ИЛИ is_author() ИЛИ is_single() true THEN оценивает второе условие ! is_user_logged_in() ! is_user_logged_in()

В исходном коде:

Без каких-либо дополнительных круглых скобок, завершающих первые три условия, если любое из этих четырех условий вернется, то вы перенаправите своего пользователя независимо от того, вошли ли они в систему или нет.

Конечный код с дополнительными круглыми скобками:

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