| | 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 | /** |