get_term_parents_list() WP 4.8.0

Отримує перелік батьків зазначеного елемента таксономії.

В результаті отримаємо текст або посилання розділені вказаним роздільником (кома, слеш).

Працює на основі:
get_ancestors()
Основа для:
get_category_parents()
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

Приклади

0

#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 /
*/

список змін

З версії 4.8.0Введено.

Код get_term_parents_list() WP 6.0.2

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;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *