Wordpress에서 이미지를 비공개로 설정
사이트를 만들고 있어요. 비공개로 하고 싶어요.가장 중요한 것은 사용자가 먼저 로그인하지 않으면 도메인의 이미지를 볼 수 없다는 것입니다.따라서 사용자가 로그인하지 않은 경우 모든 트래픽을 www.DOMAINNAME.com/wp-admin(이미지용도)으로 리다이렉트하고 싶습니다.
제가 시도한 것은 다음과 같습니다.
1) 플러그인Wordpress Force Login, 플러그인 wp-require-login 및 Coming soon 페이지와 Maintenance 모드를 모두 사용해 보았습니다.
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' );
이미지의 다이렉트 URL(http://www.DOMAINNAME.com/uploads/2015/10/foobar.jpg 등)에 접속해도 트래픽은 리다이렉트 되지 않습니다.
할 수 있을까?
---------------------------------------------
Mevius는 이미지에 직접 URL을 입력하면 Wordpress가 로드되지 않을 수 있다고 지적하고 아파치 수준에서 실행되어야 한다고 제안했습니다.
-------------------------------------------------------------
원하는 만큼 복잡하거나 간단하게 만들 수 있습니다.가장 간단한 것은 Hemnath Mouli의 제안대로 레퍼러를 확인하는 것이지만 쉽게 속일 수 있습니다.
하지만 정말 깊게 들어가고 싶다면...;)
RewriteRule과 함께 .htacess 파일을 사용하여 모든 이미지를 Wordpress를 부트스트랩하고 사용자의 인증 상태를 체크하는 PHP 스크립트로 다시 작성합니다.또한 이미지 폴더에 .htaccess 파일을 추가하여 폴더에 대한 직접 액세스를 거부하여 Edge 대소문자를 제외해야 합니다.
경고: 이 코드는 개념의 증명일 뿐입니다!!
.htaccess(접속)
RewriteRule ^(.*\.(jpg|gif|png))$ isAuthenticated.php?path=$1
인증 완료.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/
언급URL : https://stackoverflow.com/questions/32954960/make-images-private-in-wordpress
'programing' 카테고리의 다른 글
사용자가 페이지를 떠난 후 php 실행이 중지됩니까? (0) | 2023.03.11 |
---|---|
ES6 맵을 로컬 스토리지(또는 다른 곳)에 보관하려면 어떻게 해야 합니까? (0) | 2023.03.11 |
"woocommerce_add_to_cart" 필터 또는 후크를 추가하는 방법 (0) | 2023.03.11 |
REST API - "Accept: application/json" HTTP 헤더 사용 (0) | 2023.03.11 |
Wordpress는 데이터베이스 내의 카테고리에 게시물을 어떻게 링크합니까? (0) | 2023.03.11 |