我有这段代码:
foreach( get_users() as $user ) {
// Set user ID
$user_id = $user->data->ID;
// Only users who are contributors or above
if (!user_can( $user_id, 'edit_posts' ) )
return;
// Rest of code here
}
正如您所看到的,我已将其设置为仅影响可edit_posts
的用户。但它不起作用,我可以不在if (!user_can( $user_id, 'edit_posts' ) ) return;
中使用foreach
或我做错了什么?
答案 0 :(得分:2)
如果user_can
函数返回某个值,您似乎只希望运行代码。
这里有两个选择;第一个,更接近你所拥有的,使用continue
控制结构:
foreach( get_users() as $user ) {
// Set user ID
$user_id = $user->data->ID;
// Only users who are contributors or above
if (!user_can( $user_id, 'edit_posts' ) )
continue;
// Rest of code here
}
然而,许多开发人员认为,如果你需要使用continue
,那么你可能在某处编写了一些写得不好的代码。这是一个意见问题,但我个人会选择选项2,您只需将要运行的代码放在if
块中:
foreach( get_users() as $user ) {
// Set user ID
$user_id = $user->data->ID;
// Only users who are contributors or above
if ( user_can( $user_id, 'edit_posts' ) ){
// Rest of code here
}
}