Работает криво проверка — 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
Тебе нужно запрос менять в зависимости от авторизации юзера.