WordPress at a glance

get_term_parents_list() WP 1.0

Retrieve term parents with separator.

Is the basis for: get_category_parents()
Works based on: get_ancestors()
✈ 1 time = 0.003063s = very slow | 50000 times = 14.40s = slow | PHP 7.1.2, WP 4.8

No Hooks.

Return

String/WP_Error. A list of term parents on success, WP_Error or empty string on failure.

Usage

get_term_parents_list( $term_id, $taxonomy, $args );
$term_id(int) (required)
Term ID.
$taxonomy(string) (required)
Taxonomy name.
$args(string/array)

Array of optional arguments.

  • $format (string)
    Use term names or slugs for display. Accepts 'name' or 'slug'.
    Default: 'name'

  • $separator (string)
    Separator for between the terms.
    Default: '/'

  • $link (true/false)
    Whether to format as a link.
    Default: true

  • $inclusive (true/false)
    Include the term to get the parents for.
    Default: true

Default: array()

Code of get_term_parents_list: wp-includes/category-template.php VER 5.0.1

<?php
function get_term_parents_list( $term_id, $taxonomy, $args = array() ) {
	$list = '';
	$term = get_term( $term_id, $taxonomy );

	if ( is_wp_error( $term ) ) {
		return $term;
	}

	if ( ! $term ) {
		return $list;
	}

	$term_id = $term->term_id;

	$defaults = array(
		'format'    => 'name',
		'separator' => '/',
		'link'      => true,
		'inclusive' => true,
	);

	$args = wp_parse_args( $args, $defaults );

	foreach ( array( 'link', 'inclusive' ) as $bool ) {
		$args[ $bool ] = wp_validate_boolean( $args[ $bool ] );
	}

	$parents = get_ancestors( $term_id, $taxonomy, 'taxonomy' );

	if ( $args['inclusive'] ) {
		array_unshift( $parents, $term_id );
	}

	foreach ( array_reverse( $parents ) as $term_id ) {
		$parent = get_term( $term_id, $taxonomy );
		$name   = ( 'slug' === $args['format'] ) ? $parent->slug : $parent->name;

		if ( $args['link'] ) {
			$list .= '<a href="' . esc_url( get_term_link( $parent->term_id, $taxonomy ) ) . '">' . $name . '</a>' . $args['separator'];
		} else {
			$list .= $name . $args['separator'];
		}
	}

	return $list;
}

Related Functions

From tag: List (wp_list)

More from category: Taxonomies (Categories, Tags)

No comments
    Hello, !     Log In . Register