Using WordPress ‘get_taxonomy_template()’ PHP function

The get_taxonomy_template() WordPress PHP function retrieves the path of a custom taxonomy term template in the current or parent template.

Usage

get_taxonomy_template()

Example:

$template_path = get_taxonomy_template();
echo 'Taxonomy Template Path: ' . $template_path;

Parameters

  • None

More information

See WordPress Developer Resources: get_taxonomy_template()

Examples

Display the path of the taxonomy template

Display the path of the current taxonomy template being used.

$template_path = get_taxonomy_template();
echo 'Taxonomy Template Path: ' . $template_path;

Load a specific taxonomy template

Load a specific taxonomy template if it exists, otherwise, load the default taxonomy.php.

if (get_taxonomy_template()) {
    get_template_part('taxonomy', 'location');
} else {
    get_template_part('taxonomy');
}

Filter the taxonomy template path

Filter the taxonomy template path using the ‘taxonomy_template’ hook.

add_filter('taxonomy_template', 'change_taxonomy_template_path');
function change_taxonomy_template_path($template) {
    return str_replace('taxonomy-', 'my-taxonomy-', $template);
}

Check if a custom taxonomy template exists

Check if a custom taxonomy template exists for a given term.

$term = get_queried_object();
$template = locate_template('taxonomy-' . $term->taxonomy . '-' . $term->slug . '.php');

if (!empty($template)) {
    echo 'Custom taxonomy template exists!';
} else {
    echo 'No custom taxonomy template found.';
}

Create a fallback for the taxonomy template

Create a fallback for the taxonomy template by checking if a custom template exists, otherwise using the default one.

$term = get_queried_object();
$templates = [
    'taxonomy-' . $term->taxonomy . '-' . $term->slug . '.php',
    'taxonomy-' . $term->taxonomy . '.php',
    'taxonomy.php'
];

$template = locate_template($templates);

if (!empty($template)) {
    echo 'Using the template: ' . $template;
} else {
    echo 'Using the default taxonomy template.';
}