WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

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

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

Заметки к вопросу:
lethalblo 10 месяцев назад

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

mi13 10 месяцев назад

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

Kittls 9 месяцев назад

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

0
lethalblo
10 месяцев назад 15
  • 0
    kolshix749 paxtoy.com

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

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

    lethalblo 10 месяцев назад

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

    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 10 месяцев назад

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

        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 10 месяцев назад

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

    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 10 месяцев назад

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

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

    может так.

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

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

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

    Andrew 10 месяцев назад

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

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

    mi13 10 месяцев назад

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

    Andrew 10 месяцев назад

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

    mi13 10 месяцев назад

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

    Andrew 10 месяцев назад

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

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