Я бы использовал функцию get_the_category вот так ...
<?php
// before you begin the wordpress loop
$category_array = array();
?>
<?php
// from *within* the wordpress loop
foreach((get_the_category()) as $category) {
if (!in_array($category->cat_name, $category_array)) {
$category_array[] = $category->cat_name;
}
}
?>
<?php
// after the wordpress loop is finished
echo implode(",", $category_array);
?>
Этот код в основном создает новый (пустой) массив, так что для каждой категории на текущей странице проверьте, добавили ли вы уже имя этой категории в массив, а затем, если нет, добавьте его. Затем, когда цикл закончится, выведите строку имен категорий через запятую. (Конечно, вы можете изменить разделитель, если хотите запятую и пробел "," или любой другой разделитель).
В статье Кодекса содержится гораздо больше информации о том, что вы можете сделать с помощью этой функции. Надеюсь, это поможет.
Редактировать : Исправлена реализация, потому что я забыл, что это будет использоваться на странице, где вы перечисляете много постов, используя цикл. (Вам нужно инициализировать ваш массив вне цикла wordpress, а затем отобразить результаты после завершения цикла).