get_the_category( int $id = false )
Retrieve post categories.
Description Description
This tag may be used outside The Loop by passing a post id as the parameter.
Note: This function only returns results from the default "category" taxonomy. For custom taxonomies use get_the_terms().
Parameters Parameters
- $id
-
(int) (Optional) default to current post ID. The post ID.
Default value: false
Return Return
(WP_Term[]) Array of WP_Term objects, one for each category assigned to the post.
Source Source
File: wp-includes/category-template.php
function get_the_category( $id = false ) {
$categories = get_the_terms( $id, 'category' );
if ( ! $categories || is_wp_error( $categories ) ) {
$categories = array();
}
$categories = array_values( $categories );
foreach ( array_keys( $categories ) as $key ) {
_make_cat_compat( $categories[ $key ] );
}
/**
* Filters the array of categories to return for a post.
*
* @since 3.1.0
* @since 4.4.0 Added `$id` parameter.
*
* @param WP_Term[] $categories An array of categories to return for the post.
* @param int|false $id ID of the post.
*/
return apply_filters( 'get_the_categories', $categories, $id );
}
Expand full source code Collapse full source code View on Trac
Changelog Changelog
| Version | Description |
|---|---|
| 0.71 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
Show the First Category Name Only
$categories = get_the_category(); if ( ! empty( $categories ) ) { echo esc_html( $categories[0]->name ); }(Echoes the first array element ([0]) of
$categories.)Make the first category link to the category page:
$categories = get_the_category(); if ( ! empty( $categories ) ) { echo '<a href="' . esc_url( get_category_link( $categories[0]->term_id ) ) . '">' . esc_html( $categories[0]->name ) . '</a>'; }Example response from function:
array(1) { [0]=> object(stdClass)#310 (17) { ["term_id"]=> &int(6) ["name"]=> &string(10) "familylife" ["slug"]=> &string(10) "familylife" ["term_group"]=> int(0) ["term_taxonomy_id"]=> int(6) ["taxonomy"]=> string(8) "category" ["description"]=> &string(0) "" ["parent"]=> &int(0) ["count"]=> &int(208) ["object_id"]=> int(7729) ["filter"]=> string(3) "raw" ["cat_ID"]=> &int(6) ["category_count"]=> &int(208) ["category_description"]=> &string(0) "" ["cat_name"]=> &string(10) "familylife" ["category_nicename"]=> &string(10) "familylife" ["category_parent"]=> &int(0) } }Expand full source codeCollapse full source code
Get the post category if you have a custom post_type
<?php /* FIRST * Note: This function only returns results from the default “category” taxonomy. For custom taxonomies use get_the_terms(). */ $categories = get_the_terms( $post->ID, 'taxonomy' ); // now you can view your category in array: // using var_dump( $categories ); // or you can take all with foreach: foreach( $categories as $category ) { echo $category->term_id . ', ' . $category->slug . ', ' . $category->name . '<br />'; }Show All Categories as Links
This outputs all the categories assigned to the post as links. Must be used inside the loop. You can also use the function
get_the_category_list()for this.$categories = get_the_category(); $separator = ' '; $output = ''; if ( ! empty( $categories ) ) { foreach( $categories as $category ) { $output .= '<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" alt="' . esc_attr( sprintf( __( 'View all posts in %s', 'textdomain' ), $category->name ) ) . '">' . esc_html( $category->name ) . '</a>' . $separator; } echo trim( $output, $separator ); }Get the Post Categories From Outside the Loop
<?php $post = get_post(); if ( $post ) { $categories = get_the_category( $post->ID ); var_dump( $categories ); }Display all categories with name and description
<div> <?php foreach((get_the_category()) as $category){ echo $category->name."<br>"; echo category_description($category); } ?> </div>Show Category Images
This outputs category images named after the
cat_IDwith the alt attribute set tocat_name. You can also use any of the other member variables instead.<?php $categories = get_the_category(); foreach ( $categories as $category ) { echo '<img src="' . esc_url( 'http://example.com/images/' . intval( $category->term_id ) . '.jpg' ) . '" alt="' . esc_attr( $category->name ) . '" />'; }To display a list of categories associated with a post, separated by commas, write this code:
$cats = array();
foreach (get_the_category($post_id) as $c) {
$cat = get_category($c);
array_push($cats, $cat->name);
}
if (sizeOf($cats) > 0) {
$post_categories = implode(', ', $cats);
} else {
$post_categories = 'Not Assigned';
}
echo $post_categories;