Функция COUNT_USER_POSTS() в WordPress
Описание
Функция count_user_posts() используется для получения количества записей определённого типа для конкретного пользователя (автора). Эта функция будет полезна, если вам нужно узнать, сколько постов написал тот или иной автор на сайте WordPress.
Почему нужна эта функция?
В WordPress нет встроенной функции count_author_posts(), но count_user_posts() выполняет аналогичную задачу и делает это эффективно.
Если вы хотите получить количество постов нескольких пользователей одновременно, используйте функцию count_many_users_posts().
Время выполнения функции
- 1 раз — 0.001945 секунды (очень медленно)
- 50000 раз — 46.58 секунды (очень медленно)
Хуки функции
Функция использует хук get_usernumposts, который может быть полезен для модификации возвращаемого значения.
Возвращаемое значение
Эта функция возвращает строку с количеством постов, которые автор написал данного типа.
Как использовать функцию
Вот пример использования функции count_user_posts():
$count = count_user_posts($userid, $post_type, $public_only);
Параметры функции
- $userid (число) — обязательный параметр. Укажите ID пользователя, чье количество постов вы хотите получить.
- $post_type (строка/массив) — тип поста, количество записей которого вы хотите подсчитать. По умолчанию -
'post'. -
$public_only (логическое значение) — указывает, считать ли только публичные посты:
false— также будут учитываться приватные посты. Условия в запросе будут включатьOR post_status = 'private'. То есть, если у пользователя есть доступ к приватным постам, они также будут учтены.true— буду�� считаться только публичные посты, независимо от прав пользователя.
По умолчанию установлено значение
false.
Примеры использования
Пример 1: Получение общего количества постов
echo 'Общее количество постов: ' . count_user_posts(1); // например, ID пользователя 1
Результат может быть: Общее количество постов: 321.
Пример 2: Подсчет постов определённого типа
Если у вас есть тип поста book, и вам нужно узнать, сколько таких постов опубликовал пользователь с ID = 5:
echo 'Всего книг, опубликованных пользователем 5: ' . count_user_posts(5, 'book');
Пример 3: Поддержка пользовательских типов постов для старых версий WP
Если вы используете версии WordPress ниже 4.1, вам может понадобиться создать свою функцию для подсчёта пользовательских типов постов. Вот пример:
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);
}
Заметки
- Используйте глобальный объект
$wpdb, чтобы получать данные из базы данных WordPress.
Изменения в функции
- С версии 3.0.0 — функция была добавлена.
- С версии 4.1.0 — добавлен параметр
$post_type. - С версии 4.3.0 — добавлен параметр
$public_onlyи возможность передавать массив типов постов.
Связанные функции
auth_redirect()— проверяет права доступа пользователя.count_many_users_posts()— считает посты нескольких пользователей.get_author_posts_url()— возвращает URL автора.get_current_user_id()— получает ID текущего пользователя.
Эта информация поможет вам эффективно использовать функцию count_user_posts() в вашем проекте на WordPress.