current_user_can()
检查是否存在capability, 例如:编辑文章,而不是角色
订阅服务器仅有的功能是读取的,这只允许他们访问仪表板以更改其配置文件
(unless you added additional caps)。他们甚至不能发布帖子,所以你必须从贡献者开始。
$old_role = get_user_meta( $user_id, \'wp_capabilities\' );
elseif ($numPost > 3 && $numPosts <= 5 && array_key_exists( \'contributor\', $old_role ) )
{
$user_id_role = new WP_User($user_id);
$user_id_role->set_role(\'author\');
} elseif ($numPost > 6 && $numPosts <= 9 && array_key_exists( \'author\', $old_role ) )
{
$user_id_role = new WP_User($user_id);
$user_id_role->set_role(\'author\');
}
我们正在做的是使用
get_user_meta()
从usermeta表检索wp\\U功能的值。因为该字段的值是数组:array([贡献者]=>;1)
角色是我们可以使用的关键之一php array_key_exists() 函数检查该用户是否存在该角色。此外,还可以使用count_user_posts()
函数获取post计数。
完整示例:
Update: 这是经过充分测试和工作。
add_action( \'save_post\', \'update_roles\' );
function update_roles( $post_id ) {
if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE )
return $post_id;
// Get the author
$author = wp_get_current_user();
// Set variables for current user information
$count = count_user_posts( $author->ID );
$current_role = (array) get_user_meta( $author->ID, \'wp_capabilities\' );
// Do the checks to see if they have the roles and if not update them.
if ( ( $count > 3 && $count <= 5 ) && ( array_key_exists( \'contributor\', $current_role[0] ) ) ) {
$user_id_role = new WP_User( $author->ID );
$user_id_role->set_role( \'author\' );
} elseif ( ( $count > 6 && $count <= 9 ) && ( array_key_exists( \'author\', $current_role[0] ) ) ) {
$user_id_role = new WP_User( $author->ID );
$user_id_role->set_role( \'editor\' );
} return $post_id;
}