password-safes

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

По умолчанию 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

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

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. Контакты для бесплатной консультации — [email protected], +371 29394520


0 ответы

Ответить

Хотите присоединиться к обсуждению?
Не стесняйтесь вносить свой вклад!

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