WordPressでメディアへの追加・削除の権限を付与する

記事
IT・テクノロジー
WordPressには、管理者・編集者・投稿者・寄稿者・購読者の権限があって、権限によってそれぞれ出来ることが違います。

▼管理者はメニューが多い
スクリーンショット 2023-03-13 15.40.26.png


▼一番出来ることが少ない購読者の管理画面に至ってはこれしかない。
0002.png


今回のブログでは、この購読者権限に、メディアへファイルをアップロード・編集・削除の権限を付与するやり方を画像たっぷりでお届けしていきます。


購読者権限を作成する!

まず購読者の権限を持つアカウントを作ります。
左のメニューより、ユーザー→新規作成と進みます。
0003jpg.jpg
入力が終わったら一番下の[新規ユーザーを追加]を押します。


▼購読者権限を持つアカウントの作成ができました!
0004.jpg


購読者のアカウントでログインしてみます。メディアという項目がありません。
0002.png



では次に、「User Role Editor」というプラグインを使って、メディアへのアクセス権限をつけてみます。


User Role Editorプラグインを使ってみよう!

管理者アカウントでプラグインを入れます。
左メニューより、プラグイン→新規追加→User Role Editorをインストールし、有効化します。
user role と検索すると出てきます。
スクリーンショット 2023-03-13 15.50.53.png


インストールして有効化すると、左メニューのユーザーの中に、[User Role Editor]という項目が追加されますので、こちらをクリックして、
購読者にメディアへのアクセス権を付与します。
スクリーンショット 2023-03-13 16.02.26.png
一番上のSelect Role...(役割を選択し...)で購読者を選択した状態で、
下の方にある、upload_filesにチェックを入れて、
右にある[Update(更新)]をクリック。
確認画面が出るので確認して[Yes(はい)]をクリック。


購読者画面を確認してみます。
▼メディアが追加されました!
0005.png


アップは出来たのですが、このファイルの代替テキストを追加したり、画像自体を削除したりは出来ません。
スクリーンショット 2023-03-13 16.38.13.png


購読者も、画像の削除ができるようにしたい場合は、
再び管理者画面、User Role Editorの設定で、今度は、
delete_posts
edit_posts
にチェックを入れて更新ボタンを押します。
(↑似た名称がいくつかありますのでご注意を。)
スクリーンショット 2023-03-13 16.50.43.png



再び購読者画面を確認すると、代替テキスト等が編集できるようになっており、右下に削除ボタンも出来ました!
0006.jpg



ちなみに、購読者には、管理者がアップした画像の削除権限はありませんでした。
▼購読者の画面
スクリーンショット 2023-03-13 16.59.54.png


自分がアップした画像だけが表示されるようにする!

例えば、
「自分の画像と他の人の画像が混在していてカオス。自分の画像だけが見られたらいいのに。🥺」
などと思った時。。。


購読者権限の場合は、自分の画像のみ表示させたいとします。
その時は下記をfunctions.phpに書きます。(functions.phpは記入を誤るとWordPressの表示ができなくなってしまうことがあるので注意してください)

<?php
function show_only_image( $where ){
 global $current_user;
 if(is_admin()){
 if(current_user_can('subscriber') ){
 if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){
 $where .= ' AND post_author='.$current_user->data->ID;
}}}
 return $where;
 }
 add_filter( 'posts_where', 'show_only_image' );
?>


▼まず管理者のメディアライブラリを確認
管理者は、購読者アップの画像も、見られるし削除もできます。
スクリーンショット 2023-03-14 14.36.35.png


▼購読者(0313test)のメディアライブラリ
購読者は、管理者がアップした画像は見られなくなりました。
スクリーンショット 2023-03-14 14.42.21.png


購読者は別の購読者の画像は見られるのか?
購読者権限の別アカウントでも表示を確認してみます。

▼新しく追加した購読者(subscriber02)のメディアライブラリ
同じ購読者権限でも別アカウント(0313test)のものは見られませんでした。
スクリーンショット 2023-03-14 14.40.14.png


ちなみにリスト表示にすると見られましたが、削除はできないようになっています。
スクリーンショット 2023-03-14 14.51.29.png


これで購読者権限のアカウントが複数いても、他の人がアップした画像を誤って消してしまう心配もないですね。



余計なメニューを非表示にする!

先ほど、User Role Editorで、購読者に、delete_postsとedit_postsの権限を与えたので、メニュー欄に、投稿(お知らせ)・コメント・ツールも追加されました。
スクリーンショット 2023-03-14 15.50.50.png


購読者の場合は、コメントとツールを非表示にしたいとします。

その場合は下記を、functions.phpに追加します。(functions.phpは記入を誤るとWordPressの表示ができなくなってしまうことがあるので注意してください)

<?php
function remove_menus() {
 if(current_user_can('subscriber') ){ // subscriber権限の場合
 remove_menu_page( 'edit-comments.php' ); // コメント.
 remove_menu_page( 'tools.php' ); // ツール.
}
}
add_action( 'admin_menu', 'remove_menus', 999 );
?>


▼購読者(subscriber02)の管理画面
コメントとツールが非表示になりました。
0007のコピー.jpeg


▼管理者の管理画面は変更ありません
スクリーンショット 2023-03-14 15.28.47.png


ちなみにfunctions.phpはこんな感じになりました。
スクリーンショット 2023-03-14 15.23.34.png



以上、WordPressで購読者にメディアへのアクセス権を付与して、ファイルも削除できるようにし、余計なメニューは非表示にするやり方でした!

本日もお疲れ様でした☆


【参考にしたサイト】
- 【完全網羅】WordPress管理画面のメニューをプラグインなしで消す方法
https://haniwaman.com/wp-menu-remove/

- メディアからアップロードした画像は、ライブラリでもアップロードした投稿者本人しか見えないようにする WordPress BuddyPressカスタマイズメモ
https://yellow-goose.com/%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%E3%81%8B%E3%82%89%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%9F%E7%94%BB%E5%83%8F%E3%81%AF%E3%80%81%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9/
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す