Работает криво проверка — is_user_logged_in
Хочу закрыть посты с несколькими такс.
Но только для пользователей, которые не авторизованные, и которые не поставили галочку в профиле
add_action( 'pre_get_posts', 'exclude_category_on_front_page' ); function exclude_category_on_front_page( $query ) { if ( is_user_logged_in() ) { if( !wp_get_current_user()->profi ){ $query->set( 'tax_query', array( array( 'taxonomy' => 'razdel', 'field' => 'id', 'terms' => array( 1528, 1717 ), 'operator' => 'NOT IN', ))); if( has_term(['1528', '1717'], 'razdel') ){ wp_redirect( '/top', 301 ); exit(); } } }}
Тут вся загвоздка в:
if ( is_user_logged_in() ) { }
я хочу проверить авторизован пользователь на сайте
и проверить включил ли пользователь галочку в профиле и только потом выдавать, закрытые посты
if( !wp_get_current_user()->profi ){}
Если я указываю эти условия, как в коде выше проверка нормально не срабатывает.
Не авторизованные пользователи начинают видеть посты.
Можно убрать проверку is_user_logged_in
и все работает корректно, но тогда вырастает нагрузка на хостинг, наверное из-за массовой проверки wp_get_current_user
Тебе нужно запрос менять в зависимости от авторизации юзера.