Open1
WordPress でリファラー制限をする場合の対応

画像などを直リンク禁止、自サイト経由でのみ表示したい場合、リファラ-制限をすると思います。
リファラー制限をする場合の一般的な書き方は、
SetEnvIf Referer "^https://www\.example\.jp" ref_ok
Order Deny,Allow
Deny from all
Allow from env=ref_ok
のように記載します。
これを wp-content/uploads/に.htaccessとして設置すると、直リンクが禁止出来ると思います。
従来この方法で問題なかったのですが、WordPressのブロックエディタがiframe化したことによって、この方法だとうまくいきません
(iframe内なのでリファラーが取れなくなるためです)
そのため、別の方法を検討する必要があります。
うまく行かなくなったのが、管理画面の投稿画面なので、つまりログインユーザーには許可を与えれば良いのです。そのためcookieを発行してあげます。
SetEnvIf Referer "^www\.example\.jp" ref_ok
SetEnvIf Cookie "wp_auth=1" auth_ok
<RequireAny>
Require env ref_ok
Require env auth_ok
</RequireAny>
htaccessは上記のように書き換えます。
add_action('init', function () {
if (is_user_logged_in()) {
setcookie('wp_auth', '1', time() + 3600, '/', $_SERVER['HTTP_HOST'], is_ssl(), true);
} else {
setcookie('wp_auth', '', time() - 3600, '/', $_SERVER['HTTP_HOST'], is_ssl(), true);
}
});
functions.phpかプラグインで、上記のように記載してあげます。
そうすると、ログインユーザーにはcookieが発行されて投稿画面でも画像が閲覧出来るようになります。