get_the_category()works in LOOP. Using this, you will get an array of the category object for each message that is currently processing the loop. Example:
$categories = get_the_category();
var_dump($categories);
array
0 =>
object(stdClass)[191]
public 'term_id' => &string '1' (length=1)
public 'name' => &string 'Uncategorized' (length=13)
public 'slug' => &string 'uncategorized' (length=13)
public 'term_group' => string '0' (length=1)
public 'term_taxonomy_id' => string '1' (length=1)
public 'taxonomy' => string 'category' (length=8)
public 'description' => &string '' (length=0)
public 'parent' => &string '0' (length=1)
public 'count' => &string '1' (length=1)
public 'object_id' => string '66' (length=2)
public 'cat_ID' => &string '1' (length=1)
public 'category_count' => &string '1' (length=1)
public 'category_description' => &string '' (length=0)
public 'cat_name' => &string 'Uncategorized' (length=13)
public 'category_nicename' => &string 'uncategorized' (length=13)
public 'category_parent' => &string '0' (length=1)
1 =>
object(stdClass)[190]
public 'term_id' => &string '3' (length=1)
public 'name' => &string 'asd' (length=3)
public 'slug' => &string 'asd' (length=3)
public 'term_group' => string '0' (length=1)
public 'term_taxonomy_id' => string '3' (length=1)
public 'taxonomy' => string 'category' (length=8)
public 'description' => &string '' (length=0)
public 'parent' => &string '0' (length=1)
public 'count' => &string '1' (length=1)
public 'object_id' => string '66' (length=2)
public 'cat_ID' => &string '3' (length=1)
public 'category_count' => &string '1' (length=1)
public 'category_description' => &string '' (length=0)
public 'cat_name' => &string 'asd' (length=3)
public 'category_nicename' => &string 'asd' (length=3)
public 'category_parent' => &string '0' (length=1)
Now you can iterate through each category, for example
foreach($categories as $category){
echo $category->name;
$cat_link = get_category_link($category->cat_ID);
echo '<a href="'.$cat_link.'">'.$category->name.'</a>';
}
source
share