WordPressの逆引き作業メモ

このブログはWordPressで業務に使った時の自分の作業用のポイントメモです。

WordPressで管理者以外は自分のアップした画像と共有パーツしかメディアに表示されないようにする

WordPressでもっとも運用で困るもののひとつに権限設定の緩さがあります。メディアのアップされた画像は他の編集者や画像をアップロードできるユーザーからも見えるし、場合によっては削除できてしまいます。

このメディアに現在ログインしているユーザーのアップされた画像以外を表示しないコードは、よく紹介されています。

 

$current_user = wp_get_current_user();
$user_role = $current_user->roles[0]; 

if ( $user_role != 'administrator' ) {
function display_only_self_uploaded_medias( $query ) {
        if ( $user = wp_get_current_user() ) {
        $query['author'] = $user->ID;
        }
        return $query;
    }
 add_action( 'ajax_query_attachments_args', 'display_only_self_uploaded_medias' );
 }

 

このコードをfunctions.phpに追記することで、ユーザーは自分のアップした画像やPDFしか表示されなくなります。

 

 

サイトによって、各ユーザーの共有の画像パーツなどを使う場合があります。

その場合は、共有パーツをアップするユーザーを作成し、そのユーザーのuserIDが5とすると

$query['author'] = $user->ID;

のところを

$query['author__in'] = array( 5, $user->ID );

とすることで、ログインユーザーと、ユーザーIDが5のユーザーのアップされたメディアソースを表示可能になります。