[![Как спрятать защищенные паролем посты из цикла WordPress 1](https://coma.lv/wp-content/uploads/2024/11/Gemini_Generated_Image_an4a49an4a49an4a-2000px.webp)](https://coma.lv/wp-content/uploads/2024/11/Gemini_Generated_Image_an4a49an4a49an4a-2000px-1030x396.webp)

# Как спрятать защищенные паролем посты из цикла WordPress

Nov 25, 2024/by [Vadim Pavlovich](https://coma.lv/ru/author/djcoma/)

По умолчанию WordPress скрывает содержимое защищенных паролем постов, но он все равно показывает заголовок поста с префиксом Protected. В этой статье мы расскажем вам как спрятать защищенные паролем посты из цикла WordPress.

## Зачем прятать защищенные паролем посты?

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

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

Просто добавьте этот код в файл 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' );

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

![WordPress](https://coma.lv/wp-content/uploads/2016/11/hiding-protected-posts.jpg)

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

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' );

В этом примере мы проверяем может ли пользователь редактировать посты, защищенные паролем. Если нет, то ему показывает только посты, у которых нет паролей.

---

*Наша специальность — разработка и поддержка сайтов на WordPress. Контакты для бесплатной консультации — [vadim@coma.lv](mailto:vadim@coma.lv), [+371 29394520](tel:+37129394520)*

---
