当前正在使用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();
在内容提交页面上,仅允许作者用户上载文件,而不将其附加到内容提交页面(保持未附加)?