Framework for classifying and organizing WordPress content through hierarchical and non-hierarchical term groupings.
Since: 2.3.0
Source: wp-includes/taxonomy.php, wp-includes/class-wp-taxonomy.php, wp-includes/class-wp-term.php, wp-includes/class-wp-term-query.php
Components Built-in Taxonomies Taxonomy Hierarchical Object Types Description categoryYes post Post categories post_tagNo post Post tags nav_menuNo nav_menu_item Navigation menus link_categoryNo link Link categories post_formatNo post Post formats wp_themeNo wp_template, wp_template_part, wp_global_styles Theme association wp_template_part_areaNo wp_template_part Template part areas wp_pattern_categoryNo wp_block Block pattern categories
Registration Flow init hook
└── register_taxonomy()
└── new WP_Taxonomy()
├── set_props()
│ ├── apply_filters('register_taxonomy_args')
│ ├── apply_filters('register_{$taxonomy}_taxonomy_args')
│ └── get_taxonomy_labels()
├── add_rewrite_rules()
└── add_hooks()
└── do_action('registered_taxonomy')
└── do_action('registered_taxonomy_{$taxonomy}')Term Retrieval Flow get_terms() / WP_Term_Query::query()
├── parse_query()
│ ├── apply_filters('get_terms_defaults')
│ └── do_action('parse_term_query')
├── do_action_ref_array('pre_get_terms')
├── apply_filters('get_terms_args')
├── apply_filters('list_terms_exclusions')
├── apply_filters('get_terms_fields')
├── apply_filters('terms_clauses')
├── apply_filters_ref_array('terms_pre_query')
├── Database query
├── _prime_term_caches()
└── apply_filters('get_terms')Term Modification Flow wp_insert_term()
├── apply_filters('pre_insert_term')
├── sanitize_term()
├── apply_filters('wp_insert_term_data')
├── Database insert
├── do_action('create_term')
├── do_action('create_{$taxonomy}')
├── apply_filters('term_id_filter')
├── clean_term_cache()
├── do_action('created_term')
├── do_action('created_{$taxonomy}')
├── do_action('saved_term')
└── do_action('saved_{$taxonomy}')
wp_update_term()
├── get_term()
├── sanitize_term()
├── apply_filters('wp_update_term_parent')
├── apply_filters('wp_update_term_data')
├── do_action('edit_terms')
├── Database update
├── do_action('edited_terms')
├── do_action('edit_term_taxonomy')
├── do_action('edited_term_taxonomy')
├── do_action('edit_term')
├── do_action('edit_{$taxonomy}')
├── clean_term_cache()
├── do_action('edited_term')
├── do_action('edited_{$taxonomy}')
├── do_action('saved_term')
└── do_action('saved_{$taxonomy}')Database Schema wp_terms Column Type Description term_idbigint(20) Term ID (primary key) namevarchar(200) Term name slugvarchar(200) URL-friendly name term_groupbigint(10) Group for term aliases
wp_term_taxonomy Column Type Description term_taxonomy_idbigint(20) Term taxonomy ID (primary key) term_idbigint(20) Foreign key to wp_terms taxonomyvarchar(32) Taxonomy name descriptionlongtext Term description parentbigint(20) Parent term ID countbigint(20) Object count
wp_term_relationships Column Type Description object_idbigint(20) Post/object ID term_taxonomy_idbigint(20) Foreign key to wp_term_taxonomy term_orderint(11) Sort order
Column Type Description meta_idbigint(20) Meta ID (primary key) term_idbigint(20) Foreign key to wp_terms meta_keyvarchar(255) Meta key meta_valuelongtext Meta value