Using WordPress ‘get_categories_taxonomy’ PHP filter

The get_categories_taxonomy WordPress PHP filter allows you to modify the taxonomy used when retrieving terms with the get_categories() function.

Usage

add_filter('get_categories_taxonomy', 'my_custom_taxonomy', 10, 2);
function my_custom_taxonomy($taxonomy, $args) {
    // your custom code here
    return $taxonomy;
}

Parameters

  • $taxonomy (string) – The taxonomy to retrieve terms from.
  • $args (array) – An array of arguments. See get_terms() for additional arguments.

More information

See WordPress Developer Resources: get_categories_taxonomy

Examples

Change taxonomy to ‘portfolio_categories’

Change the taxonomy used by get_categories() to ‘portfolio_categories’:

add_filter('get_categories_taxonomy', 'change_to_portfolio_categories', 10, 2);
function change_to_portfolio_categories($taxonomy, $args) {
    return 'portfolio_categories';
}

Conditionally modify taxonomy

Modify the taxonomy based on a specific condition:

add_filter('get_categories_taxonomy', 'conditionally_modify_taxonomy', 10, 2);
function conditionally_modify_taxonomy($taxonomy, $args) {
    if (is_page('portfolio')) {
        return 'portfolio_categories';
    }
    return $taxonomy;
}

Modify taxonomy based on post type

Change the taxonomy based on the post type being queried:

add_filter('get_categories_taxonomy', 'modify_taxonomy_based_on_post_type', 10, 2);
function modify_taxonomy_based_on_post_type($taxonomy, $args) {
    if ($args['post_type'] == 'portfolio') {
        return 'portfolio_categories';
    }
    return $taxonomy;
}

Use custom function to determine taxonomy

Use a custom function to determine the taxonomy to be used:

add_filter('get_categories_taxonomy', 'use_custom_function_for_taxonomy', 10, 2);
function use_custom_function_for_taxonomy($taxonomy, $args) {
    return my_custom_taxonomy_function($args);
}

Modify taxonomy based on a custom field

Change the taxonomy based on a custom field value:

add_filter('get_categories_taxonomy', 'modify_taxonomy_based_on_custom_field', 10, 2);
function modify_taxonomy_based_on_custom_field($taxonomy, $args) {
    $custom_field_value = get_post_meta(get_the_ID(), 'custom_field', true);
    if ($custom_field_value == 'portfolio') {
        return 'portfolio_categories';
    }
    return $taxonomy;
}