Вывод пользователей и количества постов в WordPress

Вывод пользователей и количества постов в WordPress

Здесь вы найдете развернутый ответ на вопрос: «Как вывести всех зарегистрированных пользователей сайта 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

Вот пожалуй и все.