Foreach按功能跳过用户

时间:2014-09-10 15:59:50

标签: php wordpress

我有这段代码:

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或我做错了什么?

1 个答案:

答案 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
    }

}