我正在尝试从活动用户角色检索所有用户。我已经成功获取了所有的用户,但是我只想从当前登录的用户角色中获取用户。
在函数中使用以下代码来检索所有用户:
// Get users by role
function userLooping( $role ) {
$user_query = new WP_User_Query( array( 'role' => $role ) );
// UserLoop
if ( ! empty( $user_query->results ) ) :
echo '<div id="divuser">';
foreach ( $user_query->results as $user ) :
echo '<option value="zo">';
echo $user->display_name; // display user name
echo '</option>';
endforeach;
echo '</div>';
endif;
}
add_shortcode( 'users_role', 'userLooping' );
注意:我只添加了<options>
,因为我将结果导入到下拉菜单中。
有什么建议吗?
下面的代码为我工作。注意事项:
- 你应该检查用户是否登录到WordPress(在下面的代码片段中添加)
- 除非您有很好的理由将其分开,否则在短代码函数(在下面的代码片段中添加)中获取当前用户的角色是有意义的
- 一个WordPress用户可以有多个角色,所以这里使用
role__in
检查一个角色数组。 <option>
元素需要嵌套在select
、outgroup
或datalist
元素
function userLooping() {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
$roles = $user->roles;
$user_query = new WP_User_Query( [ 'role__in' => $roles ] );
$users = [];
if ( !empty ( $user_query->results ) ) {
$users = '<select id="divuser">';
foreach ( $user_query->results as $user ):
$users .= "<option value='$user->user_login'>";
$users .= $user->display_name; // display user name
$users .= '</option>';
endforeach;
$users .= '</select>';
}
return $users;
}
}
add_shortcode( 'users_role', 'userLooping' );