📖 Scenario: You are building a WordPress website for a book review blog. You want to organize books not only by categories but also by genres like 'Science Fiction', 'Romance', and 'Mystery'. WordPress does not have a built-in taxonomy for genres, so you will create a custom taxonomy called 'genre'.
🎯 Goal: Build a custom taxonomy called genre for the post post type. This taxonomy will let you tag posts with genres. You will register the taxonomy with proper labels and make it hierarchical like categories.
📋 What You'll Learn
Create a custom taxonomy called genre
Attach the genre taxonomy to the post post type
Make the taxonomy hierarchical (like categories)
Add labels for the taxonomy including name, singular_name, and search_items
Register the taxonomy using the init action hook
💡 Why This Matters
🌍 Real World
Custom taxonomies help organize content beyond default categories and tags, making websites easier to navigate and manage.
💼 Career
Knowing how to create and register custom taxonomies is essential for WordPress developers building custom themes and plugins.
Progress0 / 4 steps
1
Create the labels array for the custom taxonomy
Create an array called labels with these exact entries: 'name' => 'Genres', 'singular_name' => 'Genre', and 'search_items' => 'Search Genres'.
Wordpress
Hint
Use array() to create the labels array with the exact keys and values.
2
Create the arguments array for registering the taxonomy
Create an array called args with these exact entries: 'hierarchical' => true, 'labels' => $labels, and 'show_ui' => true.
Wordpress
Hint
Use array() to create the args array with the exact keys and values.
3
Register the custom taxonomy with register_taxonomy
Call register_taxonomy with these exact arguments: 'genre' as the taxonomy name, 'post' as the post type, and $args as the arguments array.
Wordpress
Hint
Use register_taxonomy with the exact parameters to register the taxonomy.
4
Hook the taxonomy registration into WordPress initialization
Wrap the register_taxonomy call inside a function called create_genre_taxonomy. Then add this function to the init action hook using add_action.
Wordpress
Hint
Define a function that registers the taxonomy and hook it to init using add_action.
Practice
(1/5)
1. What is the main purpose of creating a custom taxonomy in WordPress?
easy
A. To increase website loading speed
B. To change the website's theme colors
C. To add new user roles
D. To organize content in a way that fits your website's needs
Solution
Step 1: Understand what taxonomy means in WordPress
Taxonomies group content like categories or tags to organize posts.
Step 2: Identify the purpose of custom taxonomies
Custom taxonomies let you create your own groups to better fit your content.
Final Answer:
To organize content in a way that fits your website's needs -> Option D
Quick Check:
Custom taxonomy = organize content [OK]
Hint: Custom taxonomies organize content, not change design or speed [OK]
Common Mistakes:
Confusing taxonomies with themes or plugins
Thinking taxonomies affect site speed
Mixing taxonomies with user roles
2. Which of the following is the correct way to register a custom taxonomy called genre for posts in WordPress?
easy
A. register_taxonomy('genre', 'post', array('hierarchical' => true));
B. register_taxonomy('genre', 'posts', array('hierarchical' => true));
C. register_taxonomy('genre', array('post'), 'hierarchical' => true);
D. register_taxonomy('genre', 'post', 'hierarchical' => true);
Solution
Step 1: Check the function signature of register_taxonomy()
The function requires taxonomy name, object type(s) as string or array, and an array of arguments.
Step 2: Verify correct parameter types and syntax
register_taxonomy('genre', 'post', array('hierarchical' => true)); uses 'post' as string and an array for arguments correctly.
Final Answer:
register_taxonomy('genre', 'post', array('hierarchical' => true)); -> Option A
Quick Check:
Correct syntax uses array for args and string for post type [OK]
Hint: Use array() for args and string or array for post types [OK]
C. The third argument should be an array, not a key-value pair directly
D. The function name is incorrect
Solution
Step 1: Check the function parameters
register_taxonomy() expects the third argument as an array of arguments.
Step 2: Identify the error in argument format
The code passes 'hierarchical' => true directly, not inside an array, causing syntax error.
Final Answer:
The third argument should be an array, not a key-value pair directly -> Option C
Quick Check:
Args must be in array() [OK]
Hint: Always wrap arguments in array() for register_taxonomy [OK]
Common Mistakes:
Passing arguments without array()
Using plural taxonomy names incorrectly
Wrong function name like register_taxonomies
5. You want to create a custom taxonomy called location that behaves like tags (non-hierarchical) and attach it to both post and event post types. Which code snippet correctly achieves this?
hard
A. register_taxonomy('location', array('post', 'event'), array('hierarchical' => false));
C. register_taxonomy('location', array('post', 'event'), array('hierarchical' => true));
D. register_taxonomy('location', array('post', 'event'), array('hierarchical' => true, 'tags' => true));
Solution
Step 1: Understand hierarchical argument for tags
Tags are non-hierarchical, so 'hierarchical' must be false.
Step 2: Attach taxonomy to multiple post types
Pass an array of post types ['post', 'event'] as second argument.
Step 3: Check options for correct syntax and behavior
register_taxonomy('location', array('post', 'event'), array('hierarchical' => false)); correctly sets 'hierarchical' => false and attaches to both post types in one call.
Final Answer:
register_taxonomy('location', array('post', 'event'), array('hierarchical' => false)); -> Option A