使用`wp_EDITOR()`管理媒体附件的更好解决方案?

时间:2013-06-24 作者:Michael Ecklund

当前正在使用wp_editor(); 在我的网站前端作为内容提交表单。所有提交的帖子都被设置为“待定”,管理员将在稍后发布或删除这些帖子。

允许在中使用“添加媒体”按钮wp_editor(); 呼叫

用户需要以“作者”的用户角色注册和登录。

允许作者管理自己的帖子。但是,当作为作者用户单击“添加媒体”按钮时,所有上载都会失败。因为通过wp_editor(); 正在将附件添加到该页。这将要求用户具备以下能力:edit_pages, edit_published_pages, 和edit_others_pages, 但正如你所知。。。“Author”用户的默认功能没有这些功能,这反过来会导致上载失败。

My work around solution:

public function modify_author_role(){
    if(is_page(\'submit-content\')){
        $role = get_role(\'author\');
        $role->remove_cap(\'read\');
        $role->add_cap(\'edit_pages\');
        $role->add_cap(\'edit_published_pages\');
        $role->add_cap(\'edit_others_pages\');
    } else{
        $role = get_role(\'author\');
        $role->add_cap(\'read\');
        $role->remove_cap(\'edit_pages\');
        $role->remove_cap(\'edit_published_pages\');
        $role->remove_cap(\'edit_others_pages\');
    }
}
add_action(\'template_redirect\', array($this, \'modify_author_role\'));
因此,当作者用户登录并查看内容提交页面时,他们会暂时获得以下功能:edit_pages, edit_published_pages, 和edit_others_pages, 删除功能时:read (拒绝访问仪表板--如果在内容提交页面上尝试访问)

如果作者用户位于网站的任何其他页面,或直接访问仪表板,他们将具有正常访问权限和正常作者功能。

因此,在网站前端提交内容时,作者用户只能暂时获得更高的权限。

我只是觉得这是一个巨大的安全风险。一定有比这更优雅的解决方案。

有什么方法可以告诉我通过wp_editor(); 在内容提交页面上,仅允许作者用户上载文件,而不将其附加到内容提交页面(保持未附加)?

1 个回复
最合适的回答,由SO网友:Wyck 整理而成

是的,更好的解决方案是使用add_role( $role, $display_name, $capabilities ); 并使前端发挥独特的作用。

这样你就有了一个更容易管理的能力分离,你这样做会带来麻烦。

结束

相关推荐

是否可以在除媒体之外的其他对话框中重复使用wp.media.EDITOR模式

要扩展:我想使用相同的模式代码/外观(如wp.media.Modal、wp.media.FocusManager中使用的)来打开我自己自定义对话框的模式,而不是媒体编辑器。在过去,我用thickbox来做这类事情,但是wp。媒体情态动词似乎是情态动词未来的发展方向——更不用说它看起来很酷了。我对JS源代码进行了一些探讨,并找到了几个可能的解决方案:“借用”代码媒体视图。js并在我的插件中使用它</“扩展”wp。媒体模态(毕竟,这是一个主干视图)</创建一个自定义实现、jQueryUI等。放弃使