Сделать изображения закрытыми в WordPress

Я делаю сайт, который хотел бы сделать частным. Наиболее важная часть заключается в том, что изображения в домене не видны, без регистрации пользователя в первую очередь. Поэтому я хотел бы, чтобы весь трафик перенаправлялся на www.DOMAINNAME.com/wp-admin (также для изображений), если пользователь не вошел в систему.

Вот что я пробовал:

1) Плагины. Я пробовал как WordPress Force Login , плагин wp-require-login, так и страницу «Скорости» и «Обслуживание» .

2) Добавление функции из этого ответа . Что это:

function is_login_page() { return in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) ); } function wpse_make_blog_private() { if ( ! is_user_logged_in() && ! is_admin() && ! is_login_page() ) { global $wp_query; $wp_query->set_404(); } } add_action( 'wp', 'wpse_make_blog_private' ); 

Non из этих вещей перенаправляет трафик, если я перехожу к прямому URL-адресу для изображения (например, http://www.DOMAINNAME.com/uploads/2015/10/foobar.jpg ).

Это можно сделать?

—————– ИЗМЕНИТЬ 1 ————–

Мевиус указал, что WordPress не может быть загружен, если вы введете прямой URL-адрес изображения, поэтому он предлагает, чтобы он выполнялся на уровне apache.

————- КОНЕЦ РЕДАКТИРОВАНИЯ 1 ———–

Вы можете сделать это сложным или простым, как вы хотите. Самое простое – проверить реферер, как это было предложено Хемнатом Мули, но это может легко подделать.

Однако, если вы хотите пойти очень глубоко …;)

Используйте файл .htacess с RewriteRule, чтобы переписать все изображения в скрипт PHP, который загружает WordPress и проверяет статус аутентификации пользователя. Также вы должны добавить файл .htaccess в папку изображений, чтобы запретить прямой доступ к папке, чтобы исключить случаи краев.

ПРЕДУПРЕЖДЕНИЕ: ЭТОТ КОД ТОЛЬКО ПРОФИЛАКТИКА КОНЦЕПЦИИ, ЧТОБЫ ПОЛУЧИТЬ ВАС НАЧАЛА!

.htaccess

RewriteRule ^(.*\.(jpg|gif|png))$ isAuthenticated.php?path=$1

isAuthenticated.php

 require_once("wp-blog-header.php"); $allowedExtensions = array("jpg", "gif", "png"); $path = $_SERVER["DOCUMENT_ROOT"].DIRECTORY_SEPARATOR.$_REQUEST["path"]; $pathInfo = pathinfo($path); // Check if the WordPress user is logged in and if the file extension is allowed // @see https://codex.wordpress.org/Function_Reference/is_user_logged_in if (!is_user_logged_in() || !in_array($pathInfo["extension"], $allowedExtensions)) { header("HTTP/1.1 403 Forbidden"); exit; } if(!file_exists($path)) { header("HTTP/1.1 404 Not Found"); exit; } // Display the file and set the correct mimetype $resource = finfo_open(FILEINFO_MIME_TYPE); $mimetype = finfo_file($resource, $path); finfo_close($resource); header("Content-Type: ".$mimetype); readfile($path); 

Использовать .htaccess

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] RewriteRule \.(gif|jpg)$ - [F] 

Возвращает 403, если вы напрямую обращаетесь к изображению, но позволяет им отображаться на сайте.

Использовать .htaccess

 RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] RewriteRule \.(gif|jpg)$ - [F] 

Самый простой способ сделать это – добавить изображения в сообщения и частные страницы. Публикация частной страницы / сообщения

Полезные ссылки:
https://codex.wordpress.org/Content_Visibility
https://en.support.wordpress.com/pages/page-visibility/