WordPress как на ладони
rgbcode is looking for WordPress developers.

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

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

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

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

mi13 1.9 года назад

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

Kittls 1.8 года назад

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

0
lethalblo
1.9 года назад 15
  • 0
    kolshix779 paxtoy.com

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

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

    lethalblo 1.9 года назад

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

    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 1.9 года назад

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

        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 1.9 года назад

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

    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 1.9 года назад

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

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

    может так.

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

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

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

    Andrew 1.8 года назад

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

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

    mi13 1.8 года назад

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

    Andrew 1.8 года назад

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

    mi13 1.8 года назад

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

    Andrew 1.8 года назад

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

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