如何让撰稿人创建新的修订版(草案)编辑其已发表的帖子
-
22-10-2019 - |
题
我正在使用自定义帖子类型,让贡献者在网站上有一个个人页面。
每当用户在我的网站上注册时,脚本都会创建一个自定义类型帖子,该帖子将注册用户作为作者。
为了适度用户的条目,此帖子由编辑发表。
我希望用户(贡献者)成为:
- 无法添加此自定义类型的其他帖子;
- 能够编辑他们的作者已经发表的帖子;
- 他们的更改必须在发布之前由编辑批准。
我在用着 用户角色编辑器 管理角色和能力。
有没有办法做到这一点?
解决方案
使用角色编辑器或角色范围您可以设置贡献者来编辑您的自定义帖子类型,但不会发布,以便在批准之前将所有更改设置为草稿,并限制创建自定义帖子类型的新帖子,您可以使用我的插件 Bainternet帖子创建限制
更新
强制重新批准编辑添加此代码
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
到您的自定义帖子类型名称。
其他提示
直到我添加“ 99”,2)才能工作;到add_filter的末尾。
这是有关原因的参考: 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;
}
终于我了 解决了 使用 修订版 插入,http://wordpress.org/extend/plugins/revisionary/它用来做我在主题标题中问的事情
有关对功能的更详细的控制(已集成了修订版) 角色scoper http://wordpress.org/extend/plugins/role-scoper/
第一个真的很容易设置和使用第二个需要更多的练习,用户界面有点令人困惑,但是它确实很强大