Как узнать количество категорий?

Как можно корректно получить общее количество категорий с постами в статусе "public", учитывая, что у меня всего 3 категории при использовании Polylang, но в списке отображается 6 категорий (по 3 на каждом из 2 языков)? Я пробую использовать следующий код, но получаю 12 вместо ожидаемых 3: 

```php
$cats = get_categories();
foreach ($cats as $cat) {
   echo $cat->category_count;
}
```

Также пробовал этот вариант, но результат тот же:

```php
$cats = get_categories();
foreach ($cats as $cat) {
   echo $cat->count;
}
``` 

Какой подход я должен использовать, чтобы получить правильное количество категорий?
  • 17 сентября 2024 г. 17:13
Ответы на вопрос 2
Для того чтобы корректно получить общее количество уникальных категорий с постами в статусе "public", учитывая, что вы используете плагин Polylang, вам нужно учесть специфику работы этого плагина и как он хранит категории по языкам.

Ваш текущий подход вызывает `get_categories()`, который по умолчанию возвращает все категории на всех языках, и поэтому вы видите удвоенные результаты для каждой категории на каждом языке. 

Чтобы получить только уникальные категории, которые имеют посты в статусе "public", вы можете использовать следующий код:

```php
// Получаем все категории, у которых есть посты
$cats = get_categories(array(
    'hide_empty' => true,
));

$unique_categories = array();
foreach ($cats as $cat) {
    // Сохраняем уникальные категории в массив
    $unique_categories[$cat->term_id] = $cat;
}

// Выводим количество уникальных категорий
$count_unique_categories = count($unique_categories);
echo $count_unique_categories;
```

Вот что происходит в этом коде:

1. Вызываем `get_categories()` с параметром `hide_empty => true`, чтобы получить только категории с постами.
2. Используем ассоциативный массив `$unique_categories`, где ключом будет `term_id`, чтобы гарантировать, что каждая категория будет уникальной.
3. В конце используем `count()` для подсчета уникальных категорий и выводим результат.

Этот подход позволяет вам получить правильное количество уникальных категорий, независимо от того, сколько языков вы используете в Polylang.
Я нашел такое решение, возможно оно не идеальное, но выдает правильный результат 

$cats = get_categories();
echo count($cats);
Похожие вопросы