Как проверить, защищен ли пост паролем [if password protected] ?

Не так давно, мне нужно было решить проблему с доступностью конкретного поста на одном блоге всем желающим.
Проблема заключалась в следующем, автор написал один пост и хотел, чтобы этот пост смогли прочесть только некоторые его подписчики, мы казалось, убрали все упоминания о новом посте (пост публиковался в виде страницы со спец. шаблоном), скрыли его из меню на главной странице, убрали из кода ссылки на "предыдущий" и "следующий" посты, убрали из блока "последние записи", но в итоге, как оказалось, оставалась еще одна лазейка.

Ярый читатель мог подбором идентификатора поста в базе данных, добраться до заветной страницы. Расскажу подробнее: допустим, ты пишешь новый пост и изменяешь его постоянную ссылку и, например, получается так - twog.me/noviy-post.

Но все равно в вордпрессе по умолчанию установлены короткие ссылки для постов, вида - twog.me/?p=123. Ярый читатель, мог просто вводить в данную ссылку цифры от 1 до 999 в надежде найти так тщательно скрываемый от него пост.

Вот тут и пришлось задуматься.
Временно было решено установить пароль на запись и сообщить "избранным" подписчикам, а чтобы уж совсем обезопасится от опасных читателей - я решил спрятать под пароль и заголовок поста. Потому что, как известно, если ты ставишь пароль на какой-либо пост, на странице этого поста, текст скрыт под паролем, а заголовок все-таки отображается.

Не забудьте, что если вы не прописываете постоянные ссылки к постам вручную, то в ссылке тоже может быть ваш заголовок!

И вот для этого мне пригодился следующий код:

<?php
if (!empty($post->post_password)) { //Проверка: защищен ли пост паролем
if ($_COOKIE['wp-postpass_' . COOKIEHASH] != $post->post_password) {  //Проверка: правильный ли пароль в куках
//Тут, действие, если пароль НЕправильный, можно ничего не писать
}else{
//Тут, если правильный
}
}
?>

[ Прочитайте комменты ниже или напишите свой... ]

Ищете хостинг для своего сайта? Могу порекомендовать свой (нажмите здесь)

Комментариев пока нет.