count_user_posts()
Получает количество записей указанного типа для указанного пользователя (автора).
В WordPress нет функции count_author_posts(), но эта функция по смыслу полностью подходит.
Если нужно получить количество записей сразу нескольких пользователей, используйте count_many_users_posts().
Хуки из функции
Возвращает
Строку. Всегда возвращает число в виде строки - количество записей пользователя.
Использование
count_user_posts( $userid, $post_type, $public_only );
- $userid(число) (обязательный)
- ID пользователя, количество записей которого нужно получить.
- $post_type(строка/массив)
- Тип поста, количество записей (элементов) которого нужно посчитать.
По умолчанию: 'post' - $public_only(логический)
Вернуть только публичные посты (
post_status = publish).-
false— добавить также приватные записи. В WHERE часть запроса будет добавлено условиеOR post_status = 'private'. Т.е. для юзера с правами просмотра приватных записей они будут добавлены в запрос. true— в запрос попадут только публичные посты, независимо от прав пользователя.
По умолчанию: false
-
Примеры
#1 Демо
$count = count_user_posts( 1 ); // string(2) "16"
#2 Получим количество постов пользователя
Выведем надпись, показывающую сколько постов опубликовано пользователем с ID 1:
<?php echo 'Всего постов: ' . count_user_posts(1); ?>
Получим: Всего постов: 321
#3 Количество записей (произвольного типа) автора
Допустим, у нас есть тип записи book и нам нужно посчитать сколько записей этого типа опубликовал пользователь с ID = 5:
<?php echo 'Всего книг опубликовано пользователем 5: ' . count_user_posts( 5, 'book'); ?>
#4 Поддержка произвольных типов записей. Для WP меньше 4.1.
Этот пример не актуален для версий WP 4.1+, потому что появился второй параметр позволяющий это сделать.
Чтобы можно было подсчитывать количество записей произвольных типов, создадим свою функцию. Тут тип записи указывается во втором параметре, а в первом ID пользователя как и в count_user_posts().
function count_user_posts_by_type( $userid, $post_type = 'post' ){
global $wpdb;
$where = get_posts_by_author_sql( $post_type, TRUE, $userid );
$count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
return apply_filters( 'get_usernumposts', $count, $userid );
}
Заметки
- Global. wpdb. $wpdb WordPress database abstraction object.
Список изменений
| С версии 3.0.0 | Введена. |
| С версии 4.1.0 | Added $post_type argument. |
| С версии 4.3.0 | Added $public_only argument. Added the ability to pass an array of post types to $post_type. |