WordPress is known for its flexibility when it comes to organizing content. One of the ways to improve content organization is by using custom taxonomies. Custom taxonomies allow you to categorize content based on your specific needs. Whether you’re building a blog, an e-commerce site, or any other type of website, understanding how to use and manage custom taxonomies will help you manage and display your content more effectively.
In this article, we will explore custom taxonomies in WordPress and explain everything you need to know—from what they are and why you should use them to how you can create, link to, and display them. We’ll also include helpful code examples to help beginners get started immediately.
What Are Custom Taxonomies in WordPress?
Taxonomies allow you to group and organize content in WordPress. The most common built-in taxonomies are categories and tags, which help organize posts and make it easier for users to find related content.
But what if these taxonomies aren’t enough for your content? It is where custom taxonomies come in. They allow you to define your taxonomies for content. For example, if you have a website about movies, you may want to categorize posts based on genres, directors, or actors. Custom taxonomies allow you to achieve this by grouping content under specific terms.
This guide will show you how to create custom taxonomies using WordPress, which is simple and powerful.
Why Should You Use Custom Taxonomies?
There are many reasons why you might want to use custom taxonomies on your WordPress site. Some of the primary benefits include:
- Improved Content Organization: Custom taxonomies allow you to categorize your content in a way that makes sense for your site. For example, if you’re running a food blog, you could create a custom taxonomy for “meal types” like “breakfast,” “lunch,” “dinner,” or even specific dishes.
- Better User Experience: Custom taxonomies make it easier for your users to find related content. If meaningful categories organize your content, users can quickly find more posts that match their interests.
- SEO Benefits: Custom taxonomies improve your site’s internal linking structure, helping it rank higher in search engines. Well-organized content makes it easier for search engines to index.
- Customization for Specific Needs: If you’re building a site with unique content (like a movie database or an online store), custom taxonomies allow you to tailor the content organization to your specific needs, making it more relevant and user-friendly.
How to Create Custom Taxonomies in WordPress
Now that you understand why custom taxonomies are important let’s explore how to create them in WordPress. To do this, you will use the register_taxonomy() function, which is part of the WordPress API.
1. Register the Custom Taxonomy
You must register your custom taxonomy before you start designing. The register_taxonomy() function is used to register a new taxonomy. You will typically place this function inside a hook, like init, to make sure it’s executed at the right time.
Here’s an example where we demonstrate how we build a custom taxonomy named genre for a custom post type called movie:
function create_movie_genre_taxonomy() {
$args = array(
'labels' => array(
'name' => 'Genres',
'singular_name' => 'Genre',
'search_items' => 'Search Genres',
'all_items' => 'All Genres',
'edit_item' => 'Edit Genre',
'update_item' => 'Update Genre',
'add_new_item' => 'Add New Genre',
'new_item_name' => 'New Genre Name',
'menu_name' => 'Genre'
),
'hierarchical' => true, // Set to true for a category-like taxonomy
'show_in_rest' => true, // This allows the taxonomy to be available in the block editor
'rewrite' => array('slug' => 'genre'),
);
// Register the taxonomy
register_taxonomy('genre', 'movie', $args);
}
add_action('init', 'create_movie_genre_taxonomy');
Explanation of the Code:
- register_taxonomy(): This function registers a new taxonomy in WordPress.
- ‘genre’: The name of the custom taxonomy.
- ‘movie’: The post type to which this taxonomy will be linked. In this case, it’s the custom post type called movie.
- $args: This array contains the arguments that define the behavior of the taxonomy. We specify labels for the WordPress admin, whether the taxonomy is hierarchical (like categories) or flat (like tags), and various other settings.
Associating Custom Taxonomies with Post-Types
Once you’ve registered a custom taxonomy, you may need to associate it with a custom post type or built-in post type. If you didn’t link the taxonomy to your post type during registration, you can use the register_taxonomy_for_object_type() function.
Example:
function add_taxonomy_to_movie() {
register_taxonomy_for_object_type('genre', 'movie');
}
add_action('init', 'add_taxonomy_to_movie');
This function ensures that the genre taxonomy is applied to posts of the movie post type.
How to Add Terms to Custom Taxonomies
Once you’ve created a custom taxonomy, you can add terms (which are similar to categories or tags). You can add terms manually through the WordPress admin area, or you can insert them programmatically using wp_insert_term().
Here’s an example that adds a term called “Action” to the genre taxonomy:
wp_insert_term(
'Action', // Term name
'genre', // Taxonomy name
array(
'description' => 'Action-packed movies',
'slug' => 'action'
)
);
You can add as many terms as you need, and this process can be repeated for each custom taxonomy.
Displaying Custom Taxonomies in Your Theme
Once you’ve created and assigned custom taxonomy terms to your content, you may want to display them on the front end of your site. This can be done using the get_the_terms() function and the_terms() function.
Here’s an example that displays the genres for a movie post:
$terms = get_the_terms($post->ID, 'genre');
if ($terms && !is_wp_error($terms)) {
$genre_list = array();
foreach ($terms as $term) {
$genre_list[] = $term->name;
}
echo join(', ', $genre_list);
}
This code retrieves all terms related to a specific movie post and displays them as a comma-separated list.
Querying Posts Based on Custom Taxonomies
Sometimes, you may want to display posts based on their custom taxonomy terms. You can do this by modifying your query with tax_query, a parameter in the WP_Query function.
For example, here’s how you can query all movie posts that are associated with the “Action” genre:
$args = array(
'post_type' => 'movie',
'tax_query' => array(
array(
'taxonomy' => 'genre',
'field' => 'slug',
'terms' => 'action',
'operator' => 'IN',
),
),
);
$movie_query = new WP_Query($args);
if ($movie_query->have_posts()) :
while ($movie_query->have_posts()) : $movie_query->the_post();
the_title();
endwhile;
endif;
wp_reset_postdata();
This query retrieves all movie posts that have the term “action” in the genre taxonomy.
Frequently Asked Questions (FAQs)
Conclusion
Custom taxonomies in WordPress offer you the flexibility to organize and categorize content in a way that makes sense for your website. By using the register_taxonomy() function, you can create custom taxonomies and link them with your posts. Whether you’re building a blog, an e-commerce site, or a custom application, custom taxonomies will help you manage content effectively.
With the right setup, custom taxonomies can make your website more user-friendly, improve SEO, and provide visitors with the ability to find related content more easily. The process of registering, associating, and displaying custom taxonomies is straightforward, and with the code examples provided, you should be able to integrate it and organize your project.
About the writer
Hassan Tahir wrote this article, drawing on his experience to clarify WordPress concepts and enhance developer understanding. Through his work, he aims to help both beginners and professionals refine their skills and tackle WordPress projects with greater confidence.