如何让投稿人创建新的修订(草案)来编辑他们发布的帖子

时间:2011-05-16 作者:bluantinoo

我使用自定义的帖子类型,让贡献者在网站上有一个个人页面。

每当用户在我的网站上注册时,脚本都会创建一个自定义类型的帖子,该帖子的作者是注册用户。

为了缓和用户的输入,这篇文章由编辑发布。

我希望用户(贡献者)是:

无法添加此自定义类型的其他帖子我正在使用User Role Editor 管理角色和能力。

有办法吗?

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

使用角色编辑器或角色范围,您可以将参与者设置为编辑自定义帖子类型,但不发布,以便在批准之前将每个更改设置为草稿,并且为了限制创建自定义帖子类型的新帖子,您可以使用我的插件Bainternet Posts Creation Limits

更新以强制重新批准编辑添加此代码

add_filter( \'wp_insert_post_data\', \'re_aprove\', \'99\', 2 );
function re_aprove( $data, $postarr ) {
    //check if current user is not admin
    if ( ! current_user_can( \'manage_options\' ) && \'YOUR_CUSTOM_TYPE\' === $postarr[\'post_type\'] ) {
        if ( \'publish\' === $data[\'post_status\'] ) {
            $data[\'post_status\'] = \'pending\';
        }
    }
    return $data;
}
和更改YOUR_CUSTOM_TYPE 自定义帖子类型名称。

SO网友:Dave Williams

直到我添加了“99”,我的才起作用,2);添加到add\\u筛选器的末尾。

以下是关于原因的参考:http://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data

add_filter(\'wp_insert_post_data\',\'re_aprove\', \'99\', 2);
function re_aprove( $data , $postarr ){
    global $current_user;
    get_currentuserinfo();
    //check if current user is not admin
    if (!current_user_can(\'manage_options\') && $postarr[\'post_type\'] == "candy-item" ){ 
        if ($data[\'post_status\'] = "publish"){
            $data[\'post_status\'] = "pending";
        }
    }
    return $data;
}

SO网友:bluantinoo

最后,我solved 使用Revisionary 插件,http://wordpress.org/extend/plugins/revisionary/它被用来做我在主题标题中要求的事情

对于更详细的能力控制(已集成修订版),有Role Scoper http://wordpress.org/extend/plugins/role-scoper/

第一个很容易设置和使用第二个需要更多的练习,用户界面有点混乱,但它非常强大

结束

相关推荐

Users moderate own comments

我正在整理一个投资组合网站,遇到了一些我想实现的东西,但我不确定如何着手去做。基本上,由于该网站目前处于开发阶段,用户从未(或将不得不)访问wp admin来更改其任何详细信息,他们可以通过用户配置文件页面来实现这一点。每个用户都有一个公文包/个人简历页面,页面底部有一个评论表单,我想做的是让该页面上留下的任何评论都由该页面所有者主持,即完美的解决方案是:1) 通过电子邮件通知生物页面所有者他们有新的评论。2) Bio页面所有者登录并转到用户配置文件页面查看评论,然后接受/拒绝评论,接受后发布。任何人都有