WordPressでメディアライブラリへのアクセスをユーザー自身のアップロードに制限する方法

複数の著者がいるWordPressサイトの運営はエキサイティングですが、メディアライブラリが誰でも自由に使える状態になるとそうはいきません。私たちは経験済みで、ある著者が別の著者の画像を誤って削除してしまい、大きな公開直前に混乱を引き起こすことがどれほどイライラするかを知っています。

これを防ぐのは、あなたが思っているよりも簡単です。著者がどのメディアファイルを見るかを制限することで、ライブラリに秩序を取り戻すことができます。

WordPressにはこのための組み込み設定はありませんが、私たちは自身のプロジェクトで使用している簡単な方法を共有します。これにより、メディアファイルを整理して安全に保つことができます。

WordPressでメディアライブラリへのアクセスをユーザー自身のアップロードに制限する方法

メディアアップロードへの著者のアクセスを制限する理由

複数の著者がいるWordPressブログをお持ちの場合、著者はさまざまな画像をたくさんアップロードする可能性があります。これにより、著者が適切な画像を見つけるのが難しくなったり、誤って他の人のメディアファイルを削除または編集したりする可能性があります。

これは、生産性の低下、サイト管理者や編集者の余分な作業の増加、そして複雑な編集ワークフローなど、あらゆる問題を引き起こす可能性があります。

この無制限のアクセスは、プライバシーの懸念にもなり得ます。例えば、新製品やブログ投稿のアイデアに取り組んでいる場合、公開発表する前に他の著者がメディアライブラリで機密性の高い画像を見る可能性があります。

WordPress会員サイトをお持ちの場合、投稿者はメディアライブラリを通じてプレミアムメディアファイルにアクセスできる可能性さえあります。

それでは、WordPress管理画面内でメディアのアップロードを誰が見ることができるかを制限する方法を見ていきましょう。

WPCodeでユーザーごとにメディアのアップロードを整理する方法

過去には一部のプラグインがこの機能を提供していましたが、ユーザーのアップロードを整理する最も信頼性が高く軽量な方法は、簡単なコードスニペットを追加することです。心配しないでください、これは聞くよりも簡単です!

この目的のために、無料のWPCodeプラグインを使用します。これは、テーマファイルを編集せずにカスタムコードをWordPressサイトに追加する最も安全で簡単な方法です。

使用できる2つのコードスニペットを紹介します。最初のスニペットは、すべての管理者以外のユーザーのメディアライブラリへのアクセスを制限し、2番目のスニペットは、著者や投稿者などの特定のユーザーロールのアクセスを制限します。

多くの場合、ガイドではWordPressテーマにカスタムコードを追加するように指示されます。しかし、これは推奨されません。コード内の簡単な間違いやタイプミスは、一般的なWordPressのエラーを引き起こしたり、サイトを完全に破損させたりする可能性があります。

そのため、WPCodeをお勧めします。

WPCodeは、100万以上のWordPressサイトで使用されている最高のコードスニペットプラグインです。functions.phpファイルを編集することなく、WordPressにカスタムコードを簡単に追加できます。

専門家のアドバイス: WPBeginnerでは、WPCodeを使用して、ポートフォリオサイト全体のカスタム関数を管理しています。これにより、開発チームはコアテーマファイルを一切変更することなく、安全にコードを追加およびトラブルシューティングできます。これは大幅な時間節約になり、高額なエラーを防ぎます。

まず、無料のWPCodeプラグインをインストールして有効化する必要があります。詳細については、WordPressプラグインのインストール方法に関するステップバイステップガイドをご覧ください。

有効化したら、Code Snippets » Add Snippet に移動します。

WPCodeを使用してカスタムPHPスニペットをサイトに追加する方法

ここでは、ウェブサイトに追加できる既製のスニペットが表示されます。これには、WordPressのコメントを完全に無効にするスニペット、画像添付ページを無効にするスニペットなどが含まれます。

マウスカーソルを「カスタムコードの追加」に合わせ、次に「スニペットを使用」を選択します。

WordPressにカスタムコードスニペットを追加する

開始するには、カスタムコードスニペットのタイトルを入力します。これは、WordPressダッシュボードでスニペットを識別するのに役立つものであれば何でも構いません。

その後、「コードタイプ」ドロップダウンを開き、「PHPスニペット」を選択します。

WPCodeを使用してメディアライブラリへのアクセスを制限する

「コードプレビュー」エリアに、以下のコードスニペットのいずれかを貼り付けることができます。

オプション1:管理者以外のWordPressユーザーのメディアファイルへのアクセスを制限する

このコードは、現在のユーザーが管理者でないかどうかを確認します。管理者でない場合、メディアライブラリをフィルタリングして、ユーザーが自分でアップロードしたファイルのみを表示します。

add_filter( 'ajax_query_attachments_args', 'user_show_attachments' ); function user_show_attachments( $query ) { $user_id = get_current_user_id(); // Check if the current user is not an administrator if ( $user_id && !current_user_can('administrator') ) { $query['author'] = $user_id; } return $query; } 

これは、通常のユーザーは自分のメディアファイルのみを表示および管理できるのに対し、管理者は引き続きすべてのファイルを表示および管理できることを意味します。

オプション2:投稿編集権限を持たないWordPressユーザーのメディアファイルへのアクセスを制限する

エディターと管理者がすべてのメディアファイルを管理できるようにし、著者と投稿者は自分のアップロードのみに制限したい場合に最適なコードです。

add_filter( 'ajax_query_attachments_args', 'user_show_attachments' ); function user_show_attachments( $query ) { $user_id = get_current_user_id(); // Checks if the current user is logged in (i.e., $user_id is not 0) and does not have the capabilities to activate plugins or edit others' posts. if ( $user_id && !current_user_can('activate_plugins') && !current_user_can('edit_others_posts ') ) { $query['author'] = $user_id; } return $query; } 

これは、エディターはデフォルトで持っているが、著者は持っていない権限であるedit_others_posts権限をユーザーが持っているかどうかを確認することで機能します。

次に、「挿入」セクションまでスクロールします。WPCodeは、すべての投稿の後、フロントエンドのみ、または管理者のみなど、さまざまな場所にコードを追加できます。

カスタムPHPコードをWordPressウェブサイト全体で使用するには、「自動挿入」が選択されていない場合は選択します。次に、「場所」ドロップダウンメニューを開き、「すべてで実行」を選択します。

WPCodeを使用してウェブサイト全体でカスタムPHPコードを実行する

その後、画面の上部までスクロールし、「非アクティブ」トグルをクリックして「アクティブ」に変更します。

最後に、「スニペットを保存」をクリックしてPHPスニペットを公開します。

コードを使用してメディアファイルへのアクセスを制限する方法

これで、ユーザーはWordPressメディアライブラリにアップロードしたファイルにのみアクセスできるようになります。

よくある質問

WordPressでのメディアアップロードの整理に関して、よく寄せられる質問をいくつかご紹介します。

WordPressサイトにカスタムコードを追加しても安全ですか?

テーマのfunctions.php ファイルに直接コードを追加するのは危険です。わずかな入力ミスやエラーでも、問題が発生したり、サイトにアクセスできなくなったりする可能性があります。

そのため、WPCode プラグインの使用を強くお勧めします。これにより、スニペットを追加するための安全なレイヤーが作成されるため、何かを壊してしまう心配がありません。

これは私のウェブサイトのパフォーマンスに影響しますか?

全く影響しません。提供したコードスニペットは非常に軽量で効率的に動作します。

ユーザーがメディアライブラリにアクセスしたときに簡単なチェックを追加するだけなので、訪問者にとってウェブサイトが遅くなることはありません。

特定のユーザーロールに対してメディアへのアクセスを制限できますか?

はい、もちろんです!コードは特定のユーザーロールを対象にするように簡単にカスタマイズできます。たとえば、この制限を「著者」ロールを持つユーザーのみに適用したい場合は、代わりにこのスニペットを使用できます。

add_filter( 'ajax_query_attachments_args', 'author_only_show_attachments' ); function author_only_show_attachments( $query ) { $user = wp_get_current_user(); // Check if the current user has the 'author' role if ( in_array( 'author', (array) $user->roles ) ) { $query['author'] = $user->ID; } return $query; } 

WordPressファイルを管理するその他の方法を学ぶ

WordPress でのメディアアップロードを制限する以外にも、ファイルをより適切に管理するために以下のガイドを確認することをお勧めします。

この記事が、WordPress サイトでのユーザーによるメディアアップロードの整理に役立ったことを願っています。次に、最高の WordPress スライダープラグインの専門家によるおすすめと、WordPress で画像を簡単に遅延読み込みする方法に関するガイドを確認できます。

この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterFacebookでもフォローできます。

開示:当社のコンテンツは読者によってサポートされています。これは、当社のリンクの一部をクリックすると、当社が手数料を得る可能性があることを意味します。WPBeginnerがどのように資金提供されているか、それがなぜ重要か、そしてどのように私たちをサポートできるかについては、こちらをご覧ください。当社の編集プロセスはこちらです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

13 CommentsLeave a Reply

  1. 更新を探している人は、リストとグリッドの問題に対処する以下のものを検討すると良いかもしれません

    // リスト表示用
    add_action( ‘pre_get_posts’, ‘wpb_show_current_user_attachments_list_view’ );
    function wpb_show_current_user_attachments_list_view( $query ) {
    if ( is_admin() && $query->is_main_query() && $query->get(‘post_type’) === ‘attachment’ ) {
    $user_id = get_current_user_id();
    if ( $user_id && !current_user_can(‘administrator’) ) {
    $query->set(‘author’, $user_id);
    }
    }
    }

    // グリッド表示用
    add_filter( ‘ajax_query_attachments_args’, ‘wpb_show_current_user_attachments_grid_view’ );
    function wpb_show_current_user_attachments_grid_view( $query ) {
    $user_id = get_current_user_id();
    if ( $user_id && !current_user_can(‘administrator’) ) {
    $query[‘author’] = $user_id;
    }
    return $query;
    }

  2. プラグインは機能しますが、「upload.php?mode=list」に切り替えると、すべてのメディアを再度表示できます。これは mode=grid のモードでのみ機能します。

  3. すごい!動きました!

    しかし、モバイルからインストールしたWordPressアプリを使用すると、すべてのユーザーがメディアライブラリ全体にアクセスできます。何か解決策はありますか?

    ご協力ありがとうございます!

  4. メディアページに移動するのではなく、ユーザーがPCから直接アップロードできるようにする方法を探しています。

  5. ここで質問すべき投稿ではないかもしれませんが…

    What if you create a role for say, teacher. Is there a way or plugin that would filter so that one teacher can’t see another teacher media files? If that makes sense? :)

    Teacher-username1-メディア(username1のメディアファイルのみ表示)
    Teacher-username2-メディア(username2のメディアファイルのみ表示)

  6. ~の代わりに:

    !current_user_can(‘activate_plugins’)
    &&
    !current_user_can(‘edit_others_posts’)

    ~を使用:

    !current_user_can(‘administrator’)

    例えば「User Role Editor」プラグインを使用している場合、現在のユーザーがプラグインを有効化したり、他の人の投稿を編集したりできるようにしたい場合があります。

    Just a thought, works for me :)

    投稿ありがとうございます!

  7. 良い投稿です。

    また、ファイルを直接メディアライブラリにアップロードすることを禁止し、ユーザー(管理者を除く)に投稿/ページエディタ内の「メディアを追加」ボタンを使用させる方法はありますか?