我试图实现的功能是一个用户角色,允许用户提交编辑草稿,但不发布编辑。他们的编辑必须由编辑或更高角色的用户发布。
我已经在这个堆栈交换中搜索了一些,但没有找到任何满足我需要的解决方案。我宁愿避免使用插件,并将此功能直接构建到我的函数中。php文件。
我在一个非实时的沙盒环境中工作,所以在测试不同的解决方案时,我不担心破坏任何东西。到目前为止,我的情况是:
$role_object = get_role( \'contributor\' );
$role_object->add_cap( \'edit_pages\' );
$role_object->add_cap( \'edit_others_pages\' );
$role_object->add_cap( \'edit_published_pages\' );
$role_object->add_cap( \'upload_files\' );
$role_object->remove_cap( \'publish_posts\' );
$role_object->remove_cap( \'publish_pages\' );
add_filter(\'wp_insert_post_data\',\'re_aprove\');
function re_aprove($data , $postarr){
global $current_user;
get_currentuserinfo();
//check if current user is not admin
if (!current_user_can(\'manage_options\')){
if ($data[\'post_status\'] == "publish"){
$data[\'post_status\'] = "pending";
}
}
return $data;
}
第二个函数是在这里找到的,但我怀疑它可能是一个弃用的解决方案,因为它似乎对我来说工作不正常,我在2010年找到了一篇包含它的帖子。这一解决方案不起作用的方式让我挠头。作为一个贡献者,我可以进入任何页面的编辑页面,但是我会看到一个“更新”按钮,而不是一个“提交以供审阅”按钮。按下“更新”按钮后,编辑页面将刷新并显示“提交以供审阅”按钮,页面仪表板页面将更新页面显示为“待定”到目前为止,大部分情况都很好。问题是页面现在的前端是404。”更新“它作为一个贡献者”已经取消了页面的发布,这不是我想要的。
非常感谢您的任何想法、建议或解决方案。我认为这个功能对很多人来说都是非常理想的。
谢谢你的时间。