我一直在研究角色和功能,并使用和编写了一系列很棒的代码来创建独特的功能和角色。我已经创建了一个“主编辑器”角色来维护几乎所有功能的用户。。。但是,编辑用户(&U);delete\\u users显然允许编辑器对用户进行CUD,包括现有管理员。。。
目前,我对编码很熟悉,对编辑用户很有信心。php,但我必须接近解决方案:
if ( ! current_user_can( \'delete_users\' ) )
// or is trying to delete an admin\'s $userids
wp_die(__(\'You can’t delete users.\')); // or administrators
$update = \'del\';
$delete_count = 0;
foreach ( $userids as $id ) {
if ( ! current_user_can( \'delete_user\', $id ) )
wp_die(__( \'You can’t delete that user.\' ) );
if ( $id == $current_user->ID ) {
$update = \'err_admin_del\';
continue;
}
switch ( $_REQUEST[\'delete_option\'] ) {
case \'delete\':
wp_delete_user( $id );
break;
case \'reassign\':
wp_delete_user( $id, $_REQUEST[\'reassign_user\'] );
break;
}
++$delete_count;
}
我不知道如何检查所讨论的$userid是否是管理员用户ID。因为如果可以,我可以将其添加到die。。。我走对了吗?提前谢谢。
SO网友:brasofilo
@s\\u ha\\u dum写得很好。我将扩展他关于文档中矛盾的回答。
最近我在处理current_user_can
, 进行了一些研究,得出了以下函数:
/**
* Function name grabbed from: http://core.trac.wordpress.org/ticket/22624
* 2 lines of code from TutPlus: http://goo.gl/X4lmf
*/
if( !function_exists( \'current_user_has_role\' ) )
{
function current_user_has_role( $role )
{
$current_user = new WP_User( wp_get_current_user()->ID );
$user_roles = $current_user->roles;
$is_or_not = in_array( $role, $user_roles );
return $is_or_not;
}
}