Wordpress:有条件地更改用户角色

时间:2012-02-07 18:07:04

标签: wordpress conditional role

我正在为多位作者创建一个Wordpress网站,并希望根据文章提交设置用户角色。意味着如果任何用户有0-10篇文章,他们将转到贡献者角色,如果31-30将转到作者角色,如果31-100将转到编辑角色。

此外,我想制作默认注册组为Subscriber的注册系统。他们将获得验证电子邮件的链接,如

如果您想成为贡献者,请点击以下链接。 (要提交文章,您必须至少拥有贡献者权限) http://链接将在这里...此链接自动将用户角色从订阅者更改为贡献者。

希望我能从你的专家那里得到解决方案。我发布这个问题,给你的朋友寄予很多希望。

2 个答案:

答案 0 :(得分:7)

您要做的是在他们发布提交检查时查看他们撰写了多少帖子然后更改了角色。所以在你的主题的functions.php文件中,你需要一个像这样的钩子。

add_action('publish_post', 'update_roles');

然后是一个更新角色的函数。

function update_roles()
{

   global $wpdb;

   // Get the author
   $author = wp_get_current_user();

   // Not sure if $author and $u are the same object I suspect they are. 
   // so this may not be necessary, but I found this code elsewhere.
   // You may be able to do without this and just replace $u with $author later in the code.
   // Get post by author
   $posts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_author = " . $author->ID );

   $numPost = count($posts);

   // Do the checks to see if they have the roles and if not update them.
   if($numPost > 0 && $numposts <= 10 && current_user_can('subscriber'))
   {
       // Remove role
       $author->remove_role( 'subscriber' );

       // Add role
       $author->add_role( 'contributor' );

   }

   ...... other conditions .......

}

答案 1 :(得分:0)

使用SQL语句(数据库查询)获取Wordpress数据不符合Wordpress编码标准。 See Wordpress Handbook

最好使用count_user_posts函数

See Function on the codex