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

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

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

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

Задача решается с помощью фильтра 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

⚡️ Будни веб‑разработчика на фрилансе и ежедневно полезные материалы по разработке на моем канале в Телеграм — присоединяйтесь!

Иван Данилин
Автор Иван Данилин

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

Добавить комментарий