Wednesday, May 7, 2025

•

3 min read

How to Get the Category of a Post by ID in WordPress Without Plugins

Sometimes you need to display a post’s category outside the main loop or in a custom function. WordPress makes this easy with its built-in `get_the_category()` function. In this quick guide, you’ll learn how to get the category of any post by its ID, no plugins required.

Step 1: Open Your functions.php File

Start by opening your theme’s `functions.php` file, located in your current theme directory (usually `wp-content/themes/your-theme/functions.php`). This is where we’ll define our custom helper function.

Step 2: Create the Function

Now, we’ll define a function that takes a post ID and returns the name of its first associated category. Add this code to your `functions.php` file:

php
1function get_post_category_by_id( $post_id ) {
2      // Get all categories for the post
3      $categories = get_the_category( $post_id );
4  
5      // Check if categories exist
6      if ( ! empty( $categories ) ) {
7          // Return the first category name
8          return $categories[0]->name;
9      }
10  
11      // Return false if no categories found
12      return false;
13  }

This function uses `get_the_category()` to retrieve all categories linked to the post. It then returns the first category name if one exists, or `false` if no categories are found. You can easily modify this to return all categories or specific details like category IDs or slugs.

Step 3: Use the Function in Your Template

Now that the function is ready, you can call it anywhere in your theme. Just pass the post ID as a parameter:

php
1$post_id = 123; // Replace with your post ID
2  $category_name = get_post_category_by_id( $post_id );
3  
4  if ( $category_name ) {
5      echo 'The category of the post is: ' . esc_html( $category_name );
6  } else {
7      echo 'No categories found for this post.';
8  }

This example displays the category name directly on the page. Replace `123` with a real post ID or use it dynamically inside a loop (for example, `$post->ID`).

Complete Example

php
1<?php
2  // Define the function
3  function get_post_category_by_id( $post_id ) {
4      $categories = get_the_category( $post_id );
5  
6      if ( ! empty( $categories ) ) {
7          return $categories[0]->name;
8      }
9  
10      return false;
11  }
12  
13  // Use it in your theme
14  $post_id = 123; // Replace with your post ID
15  $category_name = get_post_category_by_id( $post_id );
16  
17  if ( $category_name ) {
18      echo 'The category of the post is: ' . esc_html( $category_name );
19  } else {
20      echo 'No categories found for this post.';
21  }

You can place this code in your theme templates or inside a shortcode for flexible display. To show multiple categories, loop through the `$categories` array instead of returning only the first element.

WordPress Developer Reference – get_the_category():

Category functions overview:

And that’s all there is to it! You now know how to retrieve a post’s category by ID without using any plugins. Whether you’re building a custom post display or tweaking a theme layout, this snippet will come in handy time and again. Keep coding and experimenting!

About the Author
Jonas Lindemann

I've worked in SEO for more than ten years and helped over 100 businesses rank higher, mostly local businesses, e-commerce stores and SaaS companies. As co-founder of LPagery I work on local SEO, programmatic SEO and AI search visibility, and I test the strategies in these articles on our own sites and with our customers.