Скрываем запароленные записи во всех циклах Вордпресс

20 февраля 2017 168

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

Защищенные записи в циклах выглядят обычно следующим образом. В русской локализации Вордпресс к заголовку прикрепляется метка «Защищено» и поле ввода пароля.

Скрываем запароленные записи во всех циклах Вордпресс

Задача решается с помощью фильтра posts_where. Код как обычно размещаем в файле functions.php активной темы.

function wpb_password_post_filter( $where = '' ) {
 if (!is_single() && !is_admin()) {
 $where .= " AND post_password = ''";
 }
 return $where;
}
add_filter( 'posts_where', 'wpb_password_post_filter' );

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

Можно пойти немного дальше и сделать защищённые записи видимыми для администраторов. Для этого немного модифицируем код.

function wpb_password_post_filter( $where = '' ) {
	if (!is_single() && !current_user_can('edit_private_posts') && !is_admin()) {
		$where .= " AND post_password = ''";
	}
	return $where;
}
add_filter( 'posts_where', 'wpb_password_post_filter' );

По материалам сайта wpbeginner.com

Читайте также
Автор: Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе WordPress.

Комментарии

Разгоните свой WordPress

Проверенный хостинг для ваших сайтов на Вордпресс

Подробнее