wp_get_post_categories( int $post_id, array $args = array() )

Retrieve the list of categories for a post.

Description #

Compatibility layer for themes and plugins. Also an easy layer of abstraction away from the complexity of the taxonomy layer.

Parameters #


(int) (Optional) The Post ID. Does not default to the ID of the global $post. Default 0.


(array) (Optional) Category arguments.

Default value: array()

Top ↑

Return #

(array) List of categories.

Top ↑

Source #

File: wp-includes/post.php

function wp_get_post_categories( $post_id = 0, $args = array() ) {
	$post_id = (int) $post_id;

	$defaults = array('fields' => 'ids');
	$args = wp_parse_args( $args, $defaults );

	$cats = wp_get_object_terms($post_id, 'category', $args);
	return $cats;

Top ↑

Changelog #

Version Description
2.1.0 Introduced.

Top ↑

More Information #

The results from wp_get_post_categories() aren’t cached which will result in a db call beign made every time this function is called. Use this function with care. For performance, functions like get_the_category() should be used to return categories attached to a post

Top ↑

User Contributed Notes #

  1. Skip to note content
    Contributed by Codex

    The example below shows how categories are retrieved, and then additional information is retrieved for each category.

    $post_categories = wp_get_post_categories( $post_id );
    $cats = array();
    foreach($post_categories as $c){
    	$cat = get_category( $c );
    	$cats[] = array( 'name' => $cat->name, 'slug' => $cat->slug );

You must log in before being able to contribute a note.