Функция count_user_posts()
в WordPress используется для получения количества записей, созданных конкретным пользователем. Она полезна для получения статистики по одному пользователю с возможностью фильтрации по типу записи и по статусу (например, учитывать только публичные посты).
count_user_posts( int $userid, array|string $post_type = 'post', bool $public_only = false ): string
Параметры:
- $userid (обязательный) — ID пользователя, для которого необходимо посчитать количество записей.
- $post_type (необязательный) — строка или массив типов записей, которые нужно подсчитать. По умолчанию
'post'
. - $public_only (необязательный) — если
true
, возвращает количество только публичных записей (например, опубликованных). По умолчаниюfalse
, что включает все записи, кроме удалённых.
Возвращаемое значение:
Строка с числом записей, опубликованных указанным пользователем.
Пример 1: Подсчет количества постов пользователя по умолчанию
Этот пример показывает, как получить количество стандартных постов для пользователя с ID 123.
$userid = 123;
$count = count_user_posts( $userid );
echo 'Количество постов, опубликованных пользователем 123: ' . $count;
Здесь функция вернёт количество постов, которые пользователь с ID 123 опубликовал в типе записей по умолчанию ('post'
).
Пример 2: Подсчет записей определенного типа
В этом примере мы подсчитаем количество записей типа book
, опубликованных пользователем с ID 8.
$userid = 8;
$post_type = 'book';
$count = count_user_posts( $userid, $post_type );
echo 'Количество книг, опубликованных пользователем 8: ' . $count;
Здесь мы подсчитываем количество записей типа book
(например, для кастомного типа записи «книга»).
Пример 3: Подсчет только публичных записей
Если нужно подсчитать только те записи, которые опубликованы (публичные), используйте параметр $public_only = true
. Это исключит черновики и приватные записи из подсчета.
$userid = 10;
$count = count_user_posts( $userid, 'post', true );
echo 'Количество публичных постов, опубликованных пользователем 10: ' . $count;
Пример 4: Подсчет записей нескольких типов
Вы можете передать массив типов записей для подсчета нескольких типов сразу. Например, можно подсчитать количество как стандартных постов, так и страниц.
$userid = 12;
$post_types = array( 'post', 'page' );
$count = count_user_posts( $userid, $post_types );
echo 'Количество постов и страниц, опубликованных пользователем 12: ' . $count;
Пример 5: Использование функции с поддержкой переводов
WordPress часто используется для многоязычных сайтов, поэтому использование функций с поддержкой переводов важно. В этом примере демонстрируется, как вывести количество постов с поддержкой локализации.
$userid = 5;
$count = count_user_posts( $userid );
printf( __( 'Количество постов, опубликованных пользователем: %d', 'my_textdomain' ), $count );
Здесь используется функция __()
для локализации строки, что позволяет автоматически переводить текст в зависимости от языка сайта.
Важные моменты:
- $public_only = false включает все записи, кроме тех, что находятся в корзине или имеют кастомный статус. Приватные записи включаются, если текущий пользователь имеет соответствующие права.
- Функция всегда возвращает количество записей в виде строки, что следует учитывать при работе с числовыми операциями.
Заключение
Функция count_user_posts()
— это мощный инструмент для получения данных о публикациях пользователя в WordPress. Она поддерживает кастомные типы записей и может фильтровать только публичные записи.