Функция wp_count_posts()
используется для подсчёта записей определённого типа в WordPress. Она более эффективна по сравнению с запросом через get_posts()
, так как использует кэширование и не создаёт лишнюю нагрузку на систему. Функция возвращает объект, содержащий количество записей для каждого статуса: опубликованные, черновики, ожидающие публикации и т. д.
wp_count_posts( string $type = 'post', string $perm = '' ): stdClass
Параметры
- $type (string): Тип записи для подсчёта. По умолчанию
'post'
. - $perm (string): Уровень доступа. Если указано
'readable'
, функция подсчитает записи, которые пользователь имеет право видеть (включая приватные). По умолчанию — пустая строка.
Возвращает
Функция возвращает объект stdClass
, содержащий количество записей для каждого статуса (например, опубликованные, черновики, приватные и т.д.). Если указанный тип записи не существует, функция вернёт пустой объект.
1. Получение количества опубликованных постов
$count_posts = wp_count_posts();
$published_posts = $count_posts->publish;
echo "Опубликованных постов: " . $published_posts;
Этот код подсчитает количество опубликованных постов и выведет результат.
2. Подсчёт черновиков
Чтобы подсчитать количество черновиков, можно использовать аналогичный код:
$count_posts = wp_count_posts();
$draft_posts = $count_posts->draft;
echo "Черновиков: " . $draft_posts;
3. Подсчёт записей произвольного типа
Допустим, у вас есть произвольный тип записей, называемый portfolio
. Вы можете подсчитать количество опубликованных записей этого типа:
$count_portfolio = wp_count_posts('portfolio');
$published_portfolio = $count_portfolio->publish;
echo "Опубликованных записей типа 'portfolio': " . $published_portfolio;
4. Подсчёт с проверкой прав пользователя на просмотр приватных записей
Чтобы учесть приватные записи, если у пользователя есть права на их просмотр, используйте параметр 'readable'
:
$count_posts = wp_count_posts('post', 'readable');
$private_posts = $count_posts->private;
echo "Приватных постов: " . $private_posts;
5. Подсчёт страниц
Аналогично можно подсчитать количество страниц (тип записи page
):
$count_pages = wp_count_posts('page');
$published_pages = $count_pages->publish;
echo "Опубликованных страниц: " . $published_pages;
Пример возвращаемого объекта
Функция возвращает объект со следующей структурой:
stdClass Object
(
[publish] => 42 // Количество опубликованных записей
[future] => 1 // Запланированные записи
[draft] => 5 // Черновики
[pending] => 0 // Ожидающие проверки
[private] => 3 // Приватные записи
[trash] => 0 // Корзина
[auto-draft] => 2 // Автосохранённые черновики
[inherit] => 0 // Унаследованные записи
)
Заключение
Функция wp_count_posts()
— это быстрый и эффективный способ подсчитать количество записей определённого типа и статуса в WordPress. Она может использоваться для подсчёта стандартных и произвольных типов записей, а также для учёта приватных записей, если у пользователя есть соответствующие права.