Все знают, что Вордпресс позволяет создавать записи, защищённые паролем. Но есть неприятный артефакт — запароленные записи выводятся во всех циклах, что часто совершенно не нужно. И сегодня мы от этого избавимся.
Защищенные записи в циклах выглядят обычно следующим образом. В русской локализации Вордпресс к заголовку прикрепляется метка «Защищено» и поле ввода пароля.
Задача решается с помощью фильтра 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
⚡️ Будни веб‑разработчика на фрилансе и ежедневно полезные материалы по разработке на моем канале в Телеграм — присоединяйтесь!