eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

Видимость поста для зарегистрированных

Хочу выводить некоторые посты только для зарегистрированных пользователей. Так чтобы этот пост во всех разделах отображался только для зарегистрированных. Подскажите, готовое решение, только без плагинов.

Заметки к вопросу:
lethalblo 3.6 лет назад

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

mi13 3.6 лет назад

Используй Проверку на id usera

Kittls 3.5 лет назад

Мне тоже это интересно. Хочу, чтоб только зарегистрированные видели данные карты для оплаты заказа. У меня оформлена visa platinum business и надо как-то придумать так, чтоб посторонние не видели адреса карты.

0
lethalblo
3.6 лет назад 58
  • 0
    kolshix 798 paxtoy.com

    Я для таких целей pre_get_pests юзаю
    Создал отдельную таксономию.
    Ну а дальше только условие.

    https://wp-kama.ru/hook/pre_get_posts
    Вам второй пункт подойдёт, только условие поменять и нужный термин или таксономию полставить

    lethalblo 3.6 лет назад

    Спасибо, что ответили. Вот что получилось. Пост скрывается с главной, поиска и других разделов, но если зайти напрямую по ссылке, то все равно открывает страницу.

    add_action( 'pre_get_posts', 'exclude_category' );
    function exclude_category( $query ) {
    	if ( !is_user_logged_in() && $query->is_main_query() ) {
    		$query->set( 'cat', '-1914' );
    	}
    }
    kolshix 3.6 лет назад

    вот код взял с примером по регистрации , тут редирект, но можно и подмену шаблона воткнуть.
    В условие воткните проверку на категорию, а лишнее удалите

        add_action( 'wp', 'template_redirect_fn' );
    		function template_redirect_fn(){
    			if ( is_single() && !is_user_logged_in() ){
    				if( has_term( null, 'post_hidden' ) && !is_user_logged_in () || 
    					has_term( array('123', '456', '789'), 'taxonomy' ) ) {
    					wp_redirect( home_url('') );
    					exit(); 
    				}
    			}
    		}
    
    lethalblo 3.6 лет назад

    Вот такой вариант вроде бы корректно работает, скрывает пост и заходе по ссылке редирект делает, если не сложно проверьте правильно ли написал, чтобы не было сюрпризов, которые обнаружатся через месяц. А воткнуть подмену шаблона, это делать редирект на заготовленную страницу?

    add_action( 'pre_get_posts', 'exclude_category' );
    function exclude_category( $query ) {
    	if ( !is_user_logged_in() ) {
    		$query->set( 'cat', '-1914' );
    
    		if (in_category('xity')){
    		wp_redirect( home_url('') );
    					exit(); 
    		}           
    	}
    }
    
    mi13 3.6 лет назад

    воткнуть подмену шаблона, это делать редирект на заготовленную страницу?

    wp_redirect( get_permalink($id страницы) )

    может так.

    Комментировать
  • 0
    Andrew 556

    как вариант - сохранять произвольное метаполе для записи, которая только для авторизованных.

    Далее в фильтре pre_get_posts проверять - залогинен ли пользователь(https://wp-kama.ru/function/is_user_logged_in) и если нет, то получать массив ID постов, для которых сохранено метаполе, и добавлять его в параметр 'exclude' основного запроса. Имейте в виду, что для этого параметра массив придется преобразовать в строку (склеить запятой или пробелом)

    Andrew 3.6 лет назад

    Более удобный и наглядный вариант - добавьте в CMS произвольный статус записи, специально под записи для авторизованных. https://wp-kama.ru/function/register_post_status

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

    mi13 3.6 лет назад

    Сложная схема, я бы сделал через post-formats

    Andrew 3.6 лет назад

    через мета-поле - согласен. У способа через статус есть свои преимущества

    mi13 3.6 лет назад

    То есть если я публикую пост и у меня есть хуки повешанные на событие публикации,при смене статуса не возникнит ли проблем со всем этим. Извините если что не понял.

    Andrew 3.6 лет назад

    если в хуке есть проверка на статус и при несовпадении статуса с publish происходит возврат из функции, то вам придется добавить новый статус в условие

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация