WordPress как на ладони
Наставник Трепачёв Д.П., phphtml.net wordpress jino

get_term_parents_list() WP 4.8.0

Получает список родителей элемента таксономии через запятую, в виде текста или ссылок.

Используется в: get_category_parents().
Работает на основе: get_ancestors()
✈ 1 раз = 0.003063с = очень медленно | 50000 раз = 14.40с = медленно PHP 7.1.2, WP 4.8

Хуков нет.

Возвращает

Строку/WP_Error.

  • Строку, содержащую ярлыки или называния терминов через разделитель (запятую). Или HTML код ссылок с названиями терминов.

  • WP_Error, если таксономии не существует.

  • Пустую строку, если не удалось получить термин.

Использование

get_term_parents_list( $term_id, $taxonomy, $args = array() );
$term_id(число) (обязательный)
ID термина.
$taxonomy(строка) (обязательный)
Название таксономии с которой будем работать.
$args(строка/массив)

Массив доп. настроек. По умолчанию выглядит так:

$defaults = array(
	'format'    => 'name',
	'separator' => '/',
	'link'      => true,
	'inclusive' => true,
);
  • $format (строка)

    • 'name' - выводит имена терминов.
    • 'slug' - выводит ярлыки терминов.
      По умолчанию: 'name'
  • $separator (строка)
    Разделитель между названиями или ссылками (если установлен параметр link).
    По умолчанию: '/'

  • $link (логический)

    • true - выводить названия в виде ссылок на термины.
    • false - выводить названия просто текстом.
      По умолчанию: true
  • $inclusive (логический)
    Включить в список текущий термин, для которого получаются родители или нет?
    По умолчанию: true

Примеры

#1 Получим список родительских элементов таксономии

Этот пример выводит «хлебные крошки» для термина 593 (categories). Сам элемент также включен в цепочку ссылок.

echo get_term_parents_list( 593, 'wpfunccat', array(
	'separator' => ' / ',
) );

/*
<a href="/function-cat/taxonomy">Таксономии</a> / 
<a href="/function-cat/categories">Рубрики</a> / 
*/

1.2) Если в параметрах указать link = false

echo get_term_parents_list( 593, 'wpfunccat', array(
	'separator' => ' / ',
	'link' => false,
) );

/*
Таксономии / Рубрики / 
*/

1.3) Если в параметрах указать format = 'slug'

echo get_term_parents_list( 593, 'wpfunccat', array(
	'separator' => ' / ',
	'format' => 'slug',
	'link' => false,
) );

/*
taxonomy / categories / 
*/

Код get term parents list: wp-includes/category-template.php WP 4.8.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;
}

Cвязанные функции

Из метки: Список (wp_list списки)

Еще из раздела: Таксономии: рубрики, метки, ...

get_term_parents_list Комментариев нет

Здравствуйте, !

Ваш комментарий