Для того чтобы корректно получить общее количество уникальных категорий с постами в статусе "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.