WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Получай пассивный доход от сайта с помощью браузерных PUSH уведомлений

Как скрыть записи для незарегистрированных пользователей?

Как сделать чтобы на определенных категориях запись была скрыта, а после регистрации можно было прочитать и тог далее.

UPD. С задачу я решил, но не понимаю, на сколько правильно. Может всё это можно было сделать без установки плагинов.

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

Задачу я решил, установил плагин для регистрации пользователей WP-recall и контент который должен видеть зарегистрированные пользователя выводиться через Шорт-код.

0
whiterice
2 месяца назад
  • 3
    kolshix677 paxtoy.com

    2 вариант - нужно смотреть по обстоятельствам - у меня в зависимости от сайта работают оба варианта (тот что от anseme)

    создаем дополнительную таксономию или пользуемся текущими тегами и категориями.
    В моем случае созданы 2 таксономии publisher и post_hidden.

    Для таксономии post_hidden - создано 2 термина one_reg и two_reg - в зависимости от того как помечен пост, я вывожу шаблон поста, либо полностью закрываю к прочтению и поиску (single-hide.php), либо вывожу частично текст и блюрю картинки (single-open.php) .
    publisher - взята для примера конструкции скрытия.

    К коду ниже нужно добавить условие проверки категории is_category('9') - для того чтоб скрывать посты по выбранным категориям

    данный код уберет из архивов и главной страницы записи которые помечены как one_reg и two_reg.

    // Фильтр для скрытия постов  // one_reg // two_reg
    		function exclude_category( $query ) {       
    		if ( !is_user_logged_in() && $query->is_main_query() ) {                
    				if( $query->is_home() || $query->is_archive() ) {  // $query->is_search // $query->is_category( 9 ) 
    					$taxquery = array(
    					array(
    						'taxonomy' => 'post_hidden',  // имя таксономии 
    						'field' => 'term_id',        // по какому полю определяется 
    						'terms' => array( 43874,   15692 ), // айдишки one_reg и two_reg 
    						'operator' => 'NOT IN'      // значит - скрываем 
    					),
    					array(
    						'taxonomy' => 'publisher',
    						'field' => 'term_id',
    						'terms' => array( 302, 296 ),  
    						'operator' => 'NOT IN'
    					)
    					);
    					$query->set( 'tax_query', $taxquery);
    				};                              
    			}
    		}
    		add_action( 'pre_get_posts', 'exclude_category', 1000 ); // simple exclude 998
    
    whiterice 2 мес назад

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

    UPD. Категорию добавил в меню.

    Данный ваш код добавил в function.php всё работает, дальше изменил мой категории айди и на имя 'taxonomy'. Без регистрации ничего нету, а после после регистрации всё доступно, как я и хотел. Но есть одна проблему, почему он скрыл все записи со всех категори, а как сделать чтобы он скрывал на некоторых категория а в некоторых был открыть.

    Как я понял, я могу данный массив переделать на другую категорию чтобы он не был скрыть для незарегистрированных пользователей?

    array(
    						'taxonomy' => 'блог',  // имя таксономии 
    						'field' => 'term_id',        // по какому полю определяется 
    						'terms' => array( 2 ), // айдишки one_reg и two_reg 
    						'operator' => 'YES IN'      // значит - открываем?
    					),

    Нашёл оператор, проверил, но не работает

    Менял вместо 'NOT IN'
    
    IN 
    NOT IN 
    AND 
    EXISTS 
    NOT EXISTS
    kolshix 2 мес назад

    Я же выше написал
    $query->is_category( 9 ) тут id категории

    ...
    if( $query->is_home() || $query->is_archive() ||  $query->is_category( 2 )  ) {  // $query->is_search 
    
    ...
    

    Этот вопрос не понял: "вот скрытый раздел мне как страницу добавлять или как рубрику"

    whiterice 2 мес назад

    Спасибо)) Поменял на категорию, всё работает!

    kolshix 2 мес назад

    Пожалуйста

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

    внутри кода шаблона темы, там где выводится то что нужно просто вставить проверку

    Если пользователь залогинен то...

    <?php if (is_user_logged_in())...

    Читать тут: https://wp-kama.ru/function/is_user_logged_in

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