禁用删除媒体wordpress

禁用删除媒体wordpress,wordpress,media,Wordpress,Media,这是我几个小时来一直在想的事情 我希望作者角色能够从他们的帖子中将内容上传到媒体库中,并且能够查看整个媒体库。我不想让作者角色删除任何媒体,甚至是他们自己的媒体 我曾想过在上传完成后自动将作者切换为“媒体”用户,但我希望有一种更干净的方式 有什么想法吗?没有内置的“删除媒体”功能。我认为这包含在“删除帖子”中,因为上传被视为帖子。(请注意,作者只能删除自己的帖子和附件。) 添加角色或功能是可能的,但您必须替换默认的媒体管理屏幕,其中删除操作由“delete_posts”上限控制。您不想弄乱核心文

这是我几个小时来一直在想的事情

我希望作者角色能够从他们的帖子中将内容上传到媒体库中,并且能够查看整个媒体库。我不想让作者角色删除任何媒体,甚至是他们自己的媒体

我曾想过在上传完成后自动将作者切换为“媒体”用户,但我希望有一种更干净的方式


有什么想法吗?

没有内置的“删除媒体”功能。我认为这包含在“删除帖子”中,因为上传被视为帖子。(请注意,作者只能删除自己的帖子和附件。)

添加角色或功能是可能的,但您必须替换默认的媒体管理屏幕,其中删除操作由“delete_posts”上限控制。您不想弄乱核心文件
upload.php
等,因此必须限制对它们的访问,然后为作者编写自己的面板。您可能不想这样做。:-)

不过,还有更好的办法。如果在保存上载时将其分配给管理员,则作者将无法删除它们。您可以使用
add_attachment
edit_attachment
操作挂钩将
post_author
更改为管理员id


希望有帮助。

在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;
    }
}

WordPress允许用户在许多地方删除图像,因此试图将它们全部隐藏起来可能是一种挑战(而且是危险的,因为WordPress的新插件或版本可能会添加另一个)。但是,您可以添加以下函数来防止删除和抛出错误(不漂亮,但有效)。如果您想要更好的控制级别,可以通过添加一个用于删除图像的自定义功能来增强这一点

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

但当我这样做的时候,问题是:当用户上传附件并且作者立即被更改时,他们似乎无法编辑附件以将其插入帖子中。也许有一种方法可以让某个用户“可共享”,可以读取和编辑,但不能删除?我已经为作者角色禁用了删除帖子,但这似乎不会影响媒体或将帖子移动到垃圾箱的能力。嗯……这是一个有趣的问题。您试图做的是一个完全有效的用例,但我不相信没有完全重写核心WP管理面板就可以做到这一点,因为垃圾和删除附件是由当前用户(“删除帖子”)控制的。。WordPress需要为当前用户添加一个过滤器。