web-dev-qa-db-ja.com

管理者以外のユーザーへのメディアアップロードを無効にする

私はクライアントサイトに取り組んでいます、彼らが望む機能の1つは彼の 編集者 または 作成者 がメディアライブラリから投稿に挿入する既存の画像を選択できるようにすることです。

以下のメディアマネージャ/アップロード画面を見て、Upload FilesタブをAdmin Usersにしか見えないようにしたり、このダイアログが表示されたときにMedia Libraryをデフォルトで表示するようにすることは可能ですか?

enter image description here

7
JasonDavis

方法1:

それぞれの役割からupload_files機能を削除します。

例えば作者から削除する:

$role = get_role( 'author' );
$role->remove_cap( 'upload_files' );

これはデータベースに保存されるため、ページが読み込まれるたびに発生するのではなく、1回だけ発生するはずです。明らかに修正されていますが、編集者の役割から削除することは同じです。機能を削除すると望ましい効果が得られますが、望んでいないかもしれない追加の効果があるかもしれません。確かめる唯一の方法はテストすることです。

方法2

このコードを考慮してください。ユーザーが管理者権限を持っていない場合、アップロードエラーが発生します。

<?php
/**
 * Plugin Name: Admin Only Uploads
 * Description: Prevents Uploads from non-Admins
 * Author: TJNowell
 * Author URI: http://tomjn.com
 * Version: 1.0
 */

function tomjn_only_upload_for_admin( $file ) {
    if ( ! current_user_can( 'manage_options' ) ) {
        $file['error'] = 'You can\'t upload images without admin privileges!';
    }
    return $file;
}
add_filter( 'wp_handle_upload_prefilter', 'tomjn_only_upload_for_admin' );

このフィルタを使用してupload_fileよりも具体的にすることができます。画像のアップロードを禁止し、画像のみを許可し、音声などは許可する

14
Tom J Nowell