| 943 | * List all the users of the blog, with several options available. |
| 944 | * |
| 945 | * @param string|array $args { |
| 946 | * Optional. Array or string of default arguments. |
| 947 | * |
| 948 | * @type string $orderby How to sort the users. Accepts 'nicename', 'email', 'url', 'registered', |
| 949 | * 'user_nicename', 'user_email', 'user_url', 'user_registered', 'name', |
| 950 | * 'display_name', 'post_count', 'ID', 'meta_value', 'user_login'. Default 'name'. |
| 951 | * @type string $order Sorting direction for $orderby. Accepts 'ASC', 'DESC'. Default 'ASC'. |
| 952 | * @type int $number Maximum users to return or display. Default empty (all users). |
| 953 | * @type bool $exclude_admin Whether to exclude the 'admin' account, if it exists. Default false. |
| 954 | * @type bool $show_fullname Whether to show the user's full name. Default false. |
| 955 | * @type string $feed If not empty, show a link to the user's feed and use this text as the alt |
| 956 | * parameter of the link. Default empty. |
| 957 | * @type string $feed_image If not empty, show a link to the user's feed and use this image URL as |
| 958 | * clickable anchor. Default empty. |
| 959 | * @type string $feed_type The feed type to link to, such as 'rss2'. Defaults to default feed type. |
| 960 | * @type bool $echo Whether to output the result or instead return it. Default true. |
| 961 | * @type string $style If 'list', each user is wrapped in an `<li>` element, otherwise the users |
| 962 | * will be separated by commas. |
| 963 | * @type bool $html Whether to list the items in HTML form or plaintext. Default true. |
| 964 | * @type string $exclude An array, comma-, or space-separated list of user IDs to exclude. Default empty. |
| 965 | * @type string $include An array, comma-, or space-separated list of user IDs to include. Default empty. |
| 966 | * } |
| 967 | * @return null|string The output, if echo is set to false. Otherwise null. |
| 968 | */ |
| 969 | function wp_list_users( $args = array() ) { |
| 970 | |
| 971 | $defaults = array( |
| 972 | 'orderby' => 'name', |
| 973 | 'order' => 'ASC', |
| 974 | 'number' => '', |
| 975 | 'exclude_admin' => true, |
| 976 | 'show_fullname' => false, |
| 977 | 'feed' => '', |
| 978 | 'feed_image' => '', |
| 979 | 'feed_type' => '', |
| 980 | 'echo' => true, |
| 981 | 'style' => 'list', |
| 982 | 'html' => true, |
| 983 | 'exclude' => '', |
| 984 | 'include' => '' |
| 985 | ); |
| 986 | |
| 987 | $args = wp_parse_args( $args, $defaults ); |
| 988 | |
| 989 | $return = ''; |
| 990 | |
| 991 | $query_args = wp_array_slice_assoc( $args, array( 'orderby', 'order', 'number', 'exclude', 'include' ) ); |
| 992 | $query_args['fields'] = 'ids'; |
| 993 | $users = get_users( $query_args ); |
| 994 | |
| 995 | foreach ( $users as $user_id ) { |
| 996 | $user = get_userdata( $user_id ); |
| 997 | |
| 998 | if ( $args['exclude_admin'] && 'admin' == $user->display_name ) { |
| 999 | continue; |
| 1000 | } |
| 1001 | |
| 1002 | if ( $args['show_fullname'] && $user->first_name && $user->last_name ) { |
| 1003 | $name = "$user->first_name $user->last_name"; |
| 1004 | } else { |
| 1005 | $name = $user->display_name; |
| 1006 | } |
| 1007 | |
| 1008 | if ( ! $args['html'] ) { |
| 1009 | $return .= $name . ', '; |
| 1010 | |
| 1011 | continue; // No need to go further to process HTML. |
| 1012 | } |
| 1013 | |
| 1014 | if ( 'list' == $args['style'] ) { |
| 1015 | $return .= '<li>'; |
| 1016 | } |
| 1017 | |
| 1018 | $row = $name; |
| 1019 | |
| 1020 | if ( ! empty( $args['feed_image'] ) || ! empty( $args['feed'] ) ) { |
| 1021 | $row .= ' '; |
| 1022 | if ( empty( $args['feed_image'] ) ) { |
| 1023 | $row .= '('; |
| 1024 | } |
| 1025 | |
| 1026 | $row .= '<a href="' . get_author_feed_link( $user->ID, $args['feed_type'] ) . '"'; |
| 1027 | |
| 1028 | $alt = ''; |
| 1029 | if ( ! empty( $args['feed'] ) ) { |
| 1030 | $alt = ' alt="' . esc_attr( $args['feed'] ) . '"'; |
| 1031 | $name = $args['feed']; |
| 1032 | } |
| 1033 | |
| 1034 | $row .= '>'; |
| 1035 | |
| 1036 | if ( ! empty( $args['feed_image'] ) ) { |
| 1037 | $row .= '<img src="' . esc_url( $args['feed_image'] ) . '" style="border: none;"' . $alt . ' />'; |
| 1038 | } else { |
| 1039 | $row .= $name; |
| 1040 | } |
| 1041 | |
| 1042 | $row .= '</a>'; |
| 1043 | |
| 1044 | if ( empty( $args['feed_image'] ) ) { |
| 1045 | $row .= ')'; |
| 1046 | } |
| 1047 | } |
| 1048 | |
| 1049 | $return .= $row; |
| 1050 | $return .= ( 'list' == $args['style'] ) ? '</li>' : ', '; |
| 1051 | } |
| 1052 | |
| 1053 | $return = rtrim( $return, ', ' ); |
| 1054 | |
| 1055 | if ( ! $args['echo'] ) { |
| 1056 | return $return; |
| 1057 | } |
| 1058 | echo $return; |
| 1059 | } |
| 1060 | |
| 1061 | /** |