Не удается получить работу unique_array () в get_the_category () foreach loop

Я пытаюсь перечислить опубликованные пользователем категории (только основные) на author.php

Я подготовил этот цикл, но он дублировал контент

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php $ar = get_the_category(); foreach($ar as $category) { if ($category->category_parent == 0) { echo '<p><a href="?author_name='.$curauth->user_login .'&cat='.$category->cat_ID.'" title="' . $category->name . '">' . $category->name . '</a></p>'; } } ?> 

Поэтому после небольшого исследования они сказали, что array_unique () может работать, но он становится пустым или NULL:

 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php $ar = get_the_category(); $cat = array_unique($ar); foreach($cat as $category) { if ($category->category_parent == 0) { echo '<p><a href="?author_name='.$curauth->user_login .'&cat='.$category->cat_ID.'" title="' . $category->name . '">' . $category->name . '</a></p>'; } } ?> 

Где я делаю ошибку?

Как удалить дубликаты имен категорий в цикле foreach? Показывать каждую категорию только один раз?

updated: war_dump ($ r):

 array(1) { [0]=> object(WP_Term)#3878 (16) { ["term_id"]=> int(39) ["name"]=> string(14) "ВИДЕНИЯ" ["slug"]=> string(42) "%d0%b2%d0%b8%d0%b4%d0%b5%d0%bd%d0%b8%d1%8f" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(39) ["taxonomy"]=> string(8) "category" ["description"]=> string(0) "" ["parent"]=> int(0) ["count"]=> int(3) ["filter"]=> string(3) "raw" ["cat_ID"]=> int(39) ["category_count"]=> int(3) ["category_description"]=> string(0) "" ["cat_name"]=> string(14) "ВИДЕНИЯ" ["category_nicename"]=> string(42) "%d0%b2%d0%b8%d0%b4%d0%b5%d0%bd%d0%b8%d1%8f" ["category_parent"]=> int(0) } }