Здесь вы найдете развернутый ответ на вопрос: «Как вывести всех зарегистрированных пользователей сайта WordPress и количество постов, которые они написали?» Я надеюсь, что эта информация будет вам полезна.
Как вывести всех зарегистрированных пользователей блога и количество постов, которые они написали?
Проще всего в данном случае получить выборку запросом к базе данных. Пример такого запроса приведен ниже.
$q = $wpdb->get_results("SELECT `display_name`,COUNT(*) as `count` FROM $wpdb->posts,$wpdb->users where $wpdb->users.`ID`=$wpdb->posts.`post_author` and `post_parent`=’0’ group by post_author"); if( !empty($q) ){ echo ’
- ’;
foreach( $q as $rec ){
echo "
- $rec->display_name ($rec->count записей) "; } echo ’
Результат будет примерно таким:
admin (60 записей)
nikonov (40 записей)
random_nick (8 записей)
Как узнать количество постов какого-то конкретного автора в wordpress?
Если известен ID участника блога, то нужно вызвать стандартную функцию get_usernumposts
echo get_usernumposts($id)
В качестве варианта можно вызвать простенький запрос (но лучше первый вариант, т. к. возможны изменения в названиях таблиц и полей в будущем)
$row = $wpdb->get_row("select count(*) as `count` from $wpdb->posts where `post_author`=’$id’ and `post_parent`=’0’ and `post_status`=’publish’ and `post_type`=’post’"); if( !empty($row) ){ echo "У пользователя (ID=$id) $row->count записей"; }
А если не по ID, а по логину?
Почти тот же случай, но сперва нужно узнать ID пользователя.
$login = "admin"; $user_data = get_userdatabylogin($login); if( !empty($user_data) ){ $count = get_usernumposts($user_data->ID); echo "У пользователя (Логин=$login) $count записей"; }
А если нужно вывести количество постов автора, зная его электронную почту, то замените get_userdatabylogin на get_user_by_email
Вот пожалуй и все.