Как ограничить доступ к загруженным файлам?
У меня есть закрытая область на сайте, доступ к которой могут получить только авторизованные пользователи. Для этого я создал шаблон страницы с условием 'current_user_can()'.
Проблема в том, что документы, прикрепленные к закрытым страницам, всё еще доступны любому пользователю, если вставить полный путь в адресную строку браузера.
Есть ли способ ограничить доступ к загруженным файлам?
РЕДАКТИРОВАНО: Хочу уточнить, файлы должны быть доступны только авторизованным пользователям.

Это не совсем вопрос по WordPress, но вы можете добавить правило перезаписи, чтобы запретить доступ, если источник запроса не ваш домен.
[Обновление]
Вам нужно сделать две вещи:
Добавить правило перезаписи (либо напрямую через .htaccess, либо используя WP_rewrite (Справка Codex). Цель здесь - запретить запросы к вашим документам, у которых в качестве источника указан не ваш домен. Это предотвращает возможность вставки ссылки напрямую в адресную строку браузера.
Обернуть ваши ссылки для скачивания в условный блок
is_user_logged_in
(Справка Codex) - таким образом они будут отображаться на странице только для авторизованных пользователей.
Пример кода доступен в связанном вопросе:

Привет anu, реферер должен быть с моего домена + посетитель должен быть зарегистрированным и подключенным пользователем. Я считаю, это вопрос WP.

Привет anu, да, это не отображает файлы, если пользователь не авторизован, но что если пользователь угадает имя файла? Он все равно сможет получить к нему доступ! И это то, чего я хочу избежать. Приведу пример: допустим, у нас есть корпоративный сайт с публичными документами (report2011.pdf, report2010.pdf и т.д.) и приватными документами (report2009.pdf, report2008.pdf). Даже если приватные документы не отображаются на публичном сайте, кто-то может легко угадать имена файлов (основываясь на структуре публичных) и таким образом получить доступ к приватным документам, просто введя URL в адресную строку.

Будет ли это работать, если у меня нет домена как такового... То есть я получаю доступ к своему блогу через IP-адрес?

Два слова: подмена реферера. Ваше решение — не более чем «безопасность через неясность»: злоумышленник не сможет получить доступ к медиафайлу, если он знает полный URL к нему. Вместо этого теперь ему нужно знать один из допустимых URL рефереров. Что мы выиграли, кроме увеличения административной сложности? По моему мнению, ничего. На момент написания этого текста существуют «тысячи» плагинов для защиты страниц и записей, но в Wordpress по-прежнему отсутствует полезная защита для медиафайлов. Разработчики Wordpress (и плагинов) избегают этого, так как знают о последствиях.

Вы можете использовать защиту от хотлинкинга с помощью вашего веб-сервера.
Смотрите ответ на StackOverflow:
https://stackoverflow.com/questions/1775582/apache-hotlink-protection-for-download-folder.
Это использует .htaccess в apache2.
По сути, вы запрещаете загрузку, если пользователь не пришел со страницы вашего блога!

Это сработало для меня. Вы можете ограничить доступ к папке wp-content/upload (за исключением авторизованных пользователей), создав файл .htaccess и добавив следующее правило перезаписи:
# Отключить просмотр содержимого директорий
Options -Indexes
# Перенаправлять неавторизованных пользователей на страницу входа
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule \.(pdf|jpg)$ /wp-login.php [L,R=302]

Плагин "Registered User Only" просто проверяет, вошел ли посетитель в систему, прежде чем показать содержимое страницы. Доступ к файлам через браузер контролируется сервером.
Вы можете попробовать плагин WP AskApache Password Protect - http://wordpress.org/extend/plugins/askapache-password-protect/
Конечно, это будет работать только если ваш блог WordPress размещен на сервере Apache.
