Bird
Raised Fist0
Wordpressframework~10 mins

Custom taxonomies in Wordpress - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Custom taxonomies
Start: Define taxonomy args
↓
Call register_taxonomy()
↓
WordPress stores taxonomy
↓
Attach taxonomy to post types
↓
Use taxonomy in admin & front-end
↓
Add terms, assign to posts
↓
Query posts by taxonomy terms
↓
End
This flow shows how you define and register a custom taxonomy, attach it to post types, then use it to organize and query content.
Execution Sample
Wordpress
function create_genre_taxonomy() {
  register_taxonomy('genre', 'book', [
    'label' => 'Genre',
    'hierarchical' => true
  ]);
}
add_action('init', 'create_genre_taxonomy');
This code registers a hierarchical custom taxonomy 'genre' for the 'book' post type.
Execution Table
StepActionFunction CallParametersResult
1Define function create_genre_taxonomyN/AN/AFunction ready to register taxonomy
2Call register_taxonomy inside functionregister_taxonomy'genre', 'book', argsTaxonomy 'genre' registered for 'book'
3Hook function to 'init' actionadd_action'init', 'create_genre_taxonomy'Function will run on WordPress init
4WordPress runs 'init' hookcreate_genre_taxonomyN/ATaxonomy 'genre' is now active
5Admin shows 'Genre' taxonomy for 'book'N/AN/AUser can add/edit 'genre' terms
6Assign 'genre' terms to 'book' postsN/AN/APosts organized by genre
7Query posts by 'genre' termWP_Querytax_query with 'genre'Posts filtered by genre term
8EndN/AN/ACustom taxonomy fully functional
💡 Process ends after taxonomy is registered, used in admin, and posts can be queried by it.
Variable Tracker
VariableStartAfter Step 2After Step 4Final
taxonomy 'genre'undefinedregisteredactiveactive and usable
function create_genre_taxonomyundefineddefinedhooked to initcalled on init
Key Moments - 3 Insights
Why do we hook the taxonomy registration function to 'init' instead of calling it directly?
WordPress needs taxonomies registered during initialization to properly set up. Hooking to 'init' ensures the taxonomy is registered at the right time, as shown in execution_table step 3 and 4.
What does 'hierarchical' => true mean in the taxonomy args?
It means the taxonomy behaves like categories with parent-child terms, not like tags. This affects how terms are displayed and organized, as seen in step 2 parameters.
How do we use the custom taxonomy after registering it?
After registration, WordPress shows it in admin for adding terms and assigning them to posts (step 5 and 6). Then you can query posts by taxonomy terms (step 7).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, at which step is the taxonomy 'genre' actually registered?
AStep 3
BStep 4
CStep 2
DStep 5
💡 Hint
Check the 'Result' column in step 2 where register_taxonomy is called.
According to variable_tracker, what is the state of 'taxonomy genre' after step 4?
Aundefined
Bactive
Cregistered
Dinactive
💡 Hint
Look at the 'After Step 4' column for 'taxonomy genre' in variable_tracker.
If we set 'hierarchical' => false in the args, how would the taxonomy behave?
ALike tags without hierarchy
BLike categories with parent-child terms
CIt would not register
DIt would register but not show in admin
💡 Hint
Refer to key_moments explanation about 'hierarchical' in step 2.
Concept Snapshot
Custom taxonomies organize content beyond default categories/tags.
Use register_taxonomy('name', 'post_type', args) inside a function.
Hook this function to 'init' to register at the right time.
Set 'hierarchical' true for category-like, false for tag-like.
After registering, add terms in admin and assign to posts.
Query posts by taxonomy terms using tax_query in WP_Query.
Full Transcript
Custom taxonomies in WordPress let you create new ways to group content. You write a function that calls register_taxonomy with a name, post type, and options like 'hierarchical'. This function is hooked to the 'init' action so WordPress runs it at the right time. Once registered, the taxonomy appears in the admin area where you can add terms and assign them to posts. You can then query posts filtered by these taxonomy terms. The key is registering during 'init' and choosing if the taxonomy is hierarchical (like categories) or not (like tags). This process helps organize content better and customize your site.

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

  1. Step 1: Understand what taxonomy means in WordPress

    Taxonomies group content like categories or tags to organize posts.
  2. Step 2: Identify the purpose of custom taxonomies

    Custom taxonomies let you create your own groups to better fit your content.
  3. Final Answer:

    To organize content in a way that fits your website's needs -> Option D
  4. 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

  1. 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.
  2. 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.
  3. Final Answer:

    register_taxonomy('genre', 'post', array('hierarchical' => true)); -> Option A
  4. 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]
Common Mistakes:
  • Using plural 'posts' instead of 'post'
  • Passing arguments outside an array
  • Wrong parameter order
3. Given this code snippet:
register_taxonomy('genre', 'post', array('hierarchical' => true));
$terms = get_terms(array('taxonomy' => 'genre', 'hide_empty' => false));
foreach ($terms as $term) {
echo $term->name . ', ';
}

What will this code output if there are two terms 'Fiction' and 'Non-Fiction' assigned to posts?
medium
A. genre, Fiction, Non-Fiction
B. Fiction, Non-Fiction,
C. Array
D. Error: Undefined variable

Solution

  1. Step 1: Understand get_terms() usage

    get_terms() fetches terms of the taxonomy 'genre' including empty ones due to 'hide_empty' => false.
  2. Step 2: Loop through terms and print their names

    The foreach loop prints each term's name followed by a comma and space.
  3. Final Answer:

    Fiction, Non-Fiction, -> Option B
  4. Quick Check:

    Loop prints term names separated by commas [OK]
Hint: get_terms returns term objects; loop prints their names [OK]
Common Mistakes:
  • Expecting taxonomy name instead of term names
  • Confusing array output with string
  • Not setting 'hide_empty' causing missing terms
4. What is wrong with this code snippet for registering a custom taxonomy?
register_taxonomy('genre', 'post', 'hierarchical' => true);
medium
A. The post type should be an array, not a string
B. The taxonomy name must be plural
C. The third argument should be an array, not a key-value pair directly
D. The function name is incorrect

Solution

  1. Step 1: Check the function parameters

    register_taxonomy() expects the third argument as an array of arguments.
  2. Step 2: Identify the error in argument format

    The code passes 'hierarchical' => true directly, not inside an array, causing syntax error.
  3. Final Answer:

    The third argument should be an array, not a key-value pair directly -> Option C
  4. 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));
B. register_taxonomy('location', 'post', array('hierarchical' => false)); register_taxonomy('location', '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

  1. Step 1: Understand hierarchical argument for tags

    Tags are non-hierarchical, so 'hierarchical' must be false.
  2. Step 2: Attach taxonomy to multiple post types

    Pass an array of post types ['post', 'event'] as second argument.
  3. 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.
  4. Final Answer:

    register_taxonomy('location', array('post', 'event'), array('hierarchical' => false)); -> Option A
  5. Quick Check:

    Non-hierarchical + multiple post types = register_taxonomy('location', array('post', 'event'), array('hierarchical' => false)); [OK]
Hint: Use array for post types and set hierarchical false for tags [OK]
Common Mistakes:
  • Setting hierarchical true for tags
  • Calling register_taxonomy twice unnecessarily
  • Passing post types as string instead of array
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard