2011-08-06 5 views
1

ここで私は今何時間もする方法を理解しようとしてきました。メディアを削除する無効にするワードプレス

著者の役割は、投稿からメディアライブラリにコンテンツをアップロードし、メディアライブラリ全体を表示できるようにします。私が望まないのは、作者の役割が自分のメディアを削除することです。

私は、アップロード完了時に自動的に作者を「メディア」ユーザーに切り替えることを考えましたが、よりクリーンな方法があると思っていました。

アイデア?

答えて

0

「delete_media」の機能はありません。私はアップロードが投稿として扱われるので、これは "delete_posts"に囲まれていると思います。

ロールまたは機能を追加することはできますが、削除アクションは「delete_posts」によって制御されるデフォルトのメディア管理画面を置き換えなければなりません(ただし、作成者は自分の投稿と添付ファイルのみを削除できます)キャップ。あなたはコアファイルupload.phpなどを混乱させたくないので、それらへのアクセスを制限し、次に作者のための独自のパネルを書く必要があります。あなたはおそらくこれをしたくないでしょう。 :-)

しかし、より良い方法があります。アップロード時に管理者にアップロードを割り当てると、作成者はそれらを削除できなくなります。 add_attachmentedit_attachmentアクションフックを使用してpost_authorを管理者IDに変更することができます。

希望に役立ちます。

+0

問題が発生した場合:ユーザーが添付ファイルをアップロードしてすぐに変更された場合、添付ファイルを編集して投稿に挿入できないようです。たぶん、特定のユーザーを共有可能にする方法があり、それは読み込みと編集が可能だが削除できない場合がありますか?私はすでに投稿者の役割に対して無効な投稿を削除していますが、それはメディアや投稿をゴミ箱に移動する機能には影響しないようです。うーん... – Asher

+0

これは興味深い問題です。あなたがしようとしているのはまったく有効なユースケースですが、コアWP管理パネルを完全に書き直すことなくこれを行う方法はないと思います。なぜなら、添付ファイルの破棄と削除は 'current_user_can( 'delete_posts')' 。ワードプレスは 'current_user_can'にフィルタを追加する必要があります。 –

0

あなたのfunctions.phpファイルにこのコードを追加します。

add_action('media_row_actions','users_own_attachments', 2, 1); 
function users_own_attachments($wp_query_obj) { 
    if(!current_user_can('delete_plugins')){ 
     unset($wp_query_obj['delete']); 
     return $wp_query_obj; 
    } 
} 
1

ワードプレスは、ユーザーが画像を削除できるようになる場所の数はそれほどので、挑戦(と危険なことができ、それらすべてを隠そうと、あります。新しいプラグインまたはWordPressのバージョンで別のプラグインを追加できます)。ただし、次の関数を追加して削除を防ぎ、エラーをスローすることができます(きわめて効果的ではありませんが)。より細かい制御が必要な場合は、イメージを削除するためのカスタム機能を追加することでこれを強化できます。

add_action('delete_attachment', 'DontDeleteMedia', 11, 1); 
function DontDeleteMedia($postID) 
{ 
    if (!current_user_can('manage_options')) { 
     exit('You cannot delete media.'); 
    } 
}