- Developer Resources
- Contents
- Description
- Parameters
- Return
- Source
- Hooks
- Related
- Used By
- Changelog
- User Contributed Notes
- Developer Resources
- Contents
- Description
- See also
- Parameters
- Return
- Source
- Hooks
- Related
- Used By
- Changelog
- User Contributed Notes
- How To Get Categories and Subcategories in WordPress
- Get Specific Post Category
- Get Subcategory from Parent Category
- Name of Category Get by ID
- Description of Category (Through ID)
- Description of Category (Get by Slug)
- Category Link (Get by ID)
- Wrapping up!
- Share This Article
- “Beautifully optimized hosting for WordPress and Magento”
- Owais Alam
Developer Resources
Retrieves the terms in a given taxonomy or list of taxonomies.
Contents
Description
You can fully inject any customizations to the query before it is sent, as well as control the output with a filter.
The return type varies depending on the value passed to $args[‘fields’] . See WP_Term_Query::get_terms() for details. In all cases, a WP_Error object will be returned if an invalid taxonomy is requested.
The ‘get_terms’ filter will be called when the cache has the term and will pass the found term along with the array of $taxonomies and array of $args.
This filter is also called before the array of terms is passed and will pass the array of terms, along with the $taxonomies and $args.
The ‘list_terms_exclusions’ filter passes the compiled exclusions along with the $args.
The ‘get_terms_orderby’ filter passes the ORDER BY clause for the query along with the $args array.
Prior to 4.5.0, the first parameter of get_terms() was a taxonomy or list of taxonomies:
Since 4.5.0, taxonomies should be passed via the ‘taxonomy’ argument in the $args array:
Parameters
$deprecated array | string Optional
Return
WP_Term[]|int[]|string[]|string|WP_Error Array of terms, a count thereof as a numeric string, or WP_Error if any of the taxonomies do not exist.
See the function description for more information.
Source
Hooks
Filters the found terms.
Related
Uses | Description | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
WP_Term_Query::__construct() wp-includes/class-wp-term-query.php |
Used By | Description | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
WP_Posts_List_Table::formats_dropdown() wp-admin/includes/class-wp-posts-list-table.php | |||||||||||||||||||||||||
WP_REST_Terms_Controller::get_items() wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php | |||||||||||||||||||||||||
WP_Customize_Nav_Menus::search_available_items_query() wp-includes/class-wp-customize-nav-menus.php | |||||||||||||||||||||||||
WP_Customize_Nav_Menus::load_available_items_query() wp-includes/class-wp-customize-nav-menus.php | |||||||||||||||||||||||||
WP_Terms_List_Table::prepare_items() wp-admin/includes/class-wp-terms-list-table.php | |||||||||||||||||||||||||
_wp_ajax_menu_quick_search() wp-admin/includes/nav-menu.php | |||||||||||||||||||||||||
Walker_Category::start_el() wp-includes/class-walker-category.php | |||||||||||||||||||||||||
WP_Widget_Links::form() wp-includes/widgets/class-wp-widget-links.php | |||||||||||||||||||||||||
wp_xmlrpc_server::wp_getTerms() wp-includes/class-wp-xmlrpc-server.php | |||||||||||||||||||||||||
wp_xmlrpc_server::_insert_post() wp-includes/class-wp-xmlrpc-server.php |
Version | Description |
---|---|
4.8.0 | Introduced ‘suppress_filter’ parameter. |
4.5.0 | Changed the function signature so that the $args array can be provided as the first parameter. Introduced ‘meta_key’ and ‘meta_value’ parameters. Introduced the ability to order results by metadata. |
4.4.0 | Introduced the ability to pass ‘term_id’ as an alias of ‘id’ for the orderby parameter. Introduced the ‘meta_query’ and ‘update_term_meta_cache’ parameters. Converted to return a list of WP_Term objects. |
4.2.0 | Introduced ‘name’ and ‘childless’ parameters. |
2.3.0 | Introduced. |
User Contributed Notes
All get_terms attributes with default values:
(I try default from this article and it didn’t work. This works.)
As of WordPress 4.6.1, here’s the array that’s returned (to add to Leo’s helpful note above)
If parent => 0 is passed, only top-level terms will be returned
Get categories and subcategories by custom taxonomies:
Working with Advanced Custom Fields (field type: Taxonomy, output: Object) for filtering taxonomies.
Case: Create a filter with main categories defined by ACF field, and all another should belongs to *others*.
Solution:
Get all post categories ordered by count.
Get all the links categories:
List all the terms in a custom taxonomy, without a link:
List all the terms, with link to term archive, separated by an interpunct (·):
Get all post categories ordered by count.
List terms limit to those matching a specific metadata key and metadata value
Get list of terms that match a certain meta_key
If `get_terms` doesnt works for some odd reason with custom taxonomy not showing registered, try using `WP_Term_Query`:
‘; //Render html if ( ! empty( $term_query->terms ) ) < foreach ( $term_query->terms as $term ) < echo wp_kses_post( $term->name ) . «, «; echo esc_html( $term->term_id ) . «, «; echo esc_html( $term->slug ) . «, «; echo «
«; > > else
Custom Taxonomy and Sub Category Lists.
Your can use this to create list table also.
Meta Query using a custom field, and then ordering using a different custom field.
Order by parent term ID – not documented, but also works.
Get all child taxonomy of a parent taxonomy
Get All Terms id and name in a array for make dropdown select:
list categories( or custom taxonomy ) and subcategory in organazid way
If you have a term assigned to something else than a post, here is a warning:
‘hide_empty’ is default true so it only shows terms assigned to posts. So if you get an empty Array returned be aware that terms (e.g. categories) assigned to attachments for example are not shown by default unless you use ‘hide_empty’ => false :
Be very careful as the code below:
can return valid terms, but can also return a WP_Error if, for example, the taxonomy is invalid…
Therefore this check alone isn’t enough to save you from bugs in your code:
Instead, better to use the one below:
Categories and Tags are the two pre-defined Taxonomies. The Taxonomy Name, when included as an element ‘taxonomy’ of the array specified as the first parameter $args, has a value of ‘category’ for Categories and ‘post_tag’ for Tags.
‘taxonomy’ => ‘category’
‘taxonomy’ => ‘post_tag’
Loop through taxonomy and list all subcategories.
Get Terms filtered by first letter
Get terms ordered by value of meta-key:
You must log in before being able to contribute a note or feedback.
Developer Resources
Retrieves a list of category objects.
Contents
Description
If you set the ‘taxonomy’ argument to ‘link_category’, the link categories will be returned instead.
See also
- get_terms(): Type of arguments that can be changed.
Parameters
Return
array List of category objects.
Source
Hooks
Filters the taxonomy used to retrieve terms when calling get_categories() .
Related
Uses | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
_make_cat_compat() wp-includes/category.php |
Used By | Description | |||
---|---|---|---|---|
export_wp() wp-admin/includes/export.php | ||||
wp_xmlrpc_server::mw_getCategories() wp-includes/class-wp-xmlrpc-server.php | ||||
wp_xmlrpc_server::mt_getCategoryList() wp-includes/class-wp-xmlrpc-server.php | ||||
wp_xmlrpc_server::wp_suggestCategories() wp-includes/class-wp-xmlrpc-server.php |
Version | Description |
---|---|
2.1.0 | Introduced. |
User Contributed Notes
List Categories and Descriptions
This example will list, in alphabetic order, all categories presented as links to the corresponding category archive. Each category description is listed after the category link.
Function only returns categories in use by posts
It is very important to note that by default, the get_category() will ONLY return categories that ARE IN USE. This means if no post is assigned to the category, then the category object for that category is not returned.
This means if you are developer, and you created a category (maybe during testing), you should supply an argument array having the ‘hide_empty’ => false in it. Check the example usage below.
Get only top level categories
To get the top level categories only, set parent value to zero. This example gets link and name of top level categories.
Specific category parent title with linked menu of subcategories
– could be used in a sidebar application
If there are no categories to display, get_categories() will return an empty array.
Drop-down box as used in Parent category at post category page
This is the code used in the built-in category page.
The slightly altered code below will grab all categories and display them with indent for a new level (child category). The select box will have name and id attribute values of ‘select_name’. This select element will not display a default “none” as the original code was used to attach a category as a child to another category (or none).
Drop-down Box
Here’s how to create a drop-down box of the subcategories of, say, a category that archives information on past events.
This mirrors the example of the drop-down example of wp_get_archives() which shows how to create a drop-down box for monthly archives.
Suppose the category whose subcategories you want to show is category 10, and that its category “nicename” is “archives”.
You must log in before being able to contribute a note or feedback.
How To Get Categories and Subcategories in WordPress
Updated on December 8, 2021
The the_category() template function is often used in WordPress theme development. It displays the parent category and any child categories. In several instances, this function could generate a long list. The problem becomes important when a website has a large number of categories and subcategories. In such WordPress get category cases, the_catagory() function often create a huge list that is often less than useful for the task.
Get Specific Post Category
The following code will get the category of a specific post. Please note that you have to add this code to either content-single.php or single.php
Get Subcategory from Parent Category
First, get the subcategory from the parent category for a particular post. Next, add the following code in the post template where the index and archive post loop start. You could also add this code after the title.
Name of Category Get by ID
Description of Category (Through ID)
Category slug is the URL name of that category:
Description of Category (Get by Slug)
Category slug is the URL name of that category:
Category Link (Get by ID)
You can generate a link to a particular category using the id. Use the following code:
Wrapping up!
In this article, I discussed how to get specific post category, subcategory from parent category, category name by ID, category description by ID and category link by ID.
If you need help with the code or would like to add to the discussion, do leave a comment below.
Share This Article
Customer Review at
“Beautifully optimized hosting for WordPress and Magento”
Arda Burak [Agency Owner]
Owais Alam
is the WordPress Community Manager at Cloudways — A Managed WooCommerce Hosting Platform and a seasoned PHP developer. He loves to develop all sorts of websites on WordPress and is in love with WooCommerce in particular. You can email him at [email protected]
Adblockdetector