get_term_link

Получает УРЛ на страницу архива термина (элемента таксономии). Тоже самое что ссылка на раздел рубрики.

Функция возвращает постоянную ссылку на страницу определенного элемента таксономии (термина).

Функция может пригодится, когда на сайте создана произвольная таксономия и нужно получить ссылку на какой-либо раздел этой произвольной таксономии.

Если в параметр $term передается ID термина, то убедитесь что передается тип число (int). Например, если вы передаете переменную $term_id, обработайте её: (int) $trem_id: иначе, если в переменной находится строка в виде числа ‘5’, функция будет искать термин со слагом 5, а не по ID – это может вызвать непонятную для вас ошибку.
Хуки из функции:
category_link
tag_link
term_link
Возвращает

Строку/WP_Error. Ссылку на элемент таксономии или объект WP_ERror если элемента не существует.

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

get_term_link( $term, $taxonomy = '' );
$term(строка/число/объект) (обязательный)
ID/объект/имя элемента таксономии, ссылку на который нужно получить.
$taxonomy(строка)
Название таксономии, ссылку на элемент которой нужно получить.
По умолчанию: ”

Примеры

#1. Выведем на экран ссылку на архивную страницу элемента таксономии

5 – ID элемента, tax_name – название таксономии.

$term_id = 5;
$term_link = get_term_link($term_id, 'tax_name');
echo "<a href='". $term_link ."'>ссылка на раздел с ID ". $term_id ."</a>";

#1.2. $term_id должен быть числом, если это число…

Предположим что $term_id уже известен и передается в виде строки, тогда его нужно преобразовать в число иначе функция будет интерпретировать его как имя (slug)

$term_id = '5';
$term_link = get_term_link( (int) $term_id, 'tax_name' );
echo "<a href='". $term_link ."'>ссылка на раздел с ID ". $term_id ."</a>";

#2. Пример вывода ссылки по названию элемента таксономии

$term_slug = 'raznoe'; //передавать нужно альтернативное имя (slug)
$term_link = get_term_link($term_slug, 'tax_name');
echo "<a href='". $term_link ."'>ссылка на раздел ". $term_slug ."</a>";

Код из


wp-includes/taxonomy.php

WP 4.7.2

<?php
function get_term_link( $term, $taxonomy = '' ) {
	global $wp_rewrite;

	if ( !is_object($term) ) {
		if ( is_int( $term ) ) {
			$term = get_term( $term, $taxonomy );
		} else {
			$term = get_term_by( 'slug', $term, $taxonomy );
		}
	}

	if ( !is_object($term) )
		$term = new WP_Error('invalid_term', __('Empty Term'));

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

	$taxonomy = $term->taxonomy;

	$termlink = $wp_rewrite->get_extra_permastruct($taxonomy);

	$slug = $term->slug;
	$t = get_taxonomy($taxonomy);

	if ( empty($termlink) ) {
		if ( 'category' == $taxonomy )
			$termlink = '?cat=' . $term->term_id;
		elseif ( $t->query_var )
			$termlink = "?$t->query_var=$slug";
		else
			$termlink = "?taxonomy=$taxonomy&term=$slug";
		$termlink = home_url($termlink);
	} else {
		if ( $t->rewrite['hierarchical'] ) {
			$hierarchical_slugs = array();
			$ancestors = get_ancestors( $term->term_id, $taxonomy, 'taxonomy' );
			foreach ( (array)$ancestors as $ancestor ) {
				$ancestor_term = get_term($ancestor, $taxonomy);
				$hierarchical_slugs[] = $ancestor_term->slug;
			}
			$hierarchical_slugs = array_reverse($hierarchical_slugs);
			$hierarchical_slugs[] = $slug;
			$termlink = str_replace("%$taxonomy%", implode('/', $hierarchical_slugs), $termlink);
		} else {
			$termlink = str_replace("%$taxonomy%", $slug, $termlink);
		}
		$termlink = home_url( user_trailingslashit($termlink, 'category') );
	}
	// Back Compat filters.
	if ( 'post_tag' == $taxonomy ) {

		/**
		 * Filters the tag link.
		 *
		 * @since 2.3.0
		 * @deprecated 2.5.0 Use 'term_link' instead.
		 *
		 * @param string $termlink Tag link URL.
		 * @param int    $term_id  Term ID.
		 */
		$termlink = apply_filters( 'tag_link', $termlink, $term->term_id );
	} elseif ( 'category' == $taxonomy ) {

		/**
		 * Filters the category link.
		 *
		 * @since 1.5.0
		 * @deprecated 2.5.0 Use 'term_link' instead.
		 *
		 * @param string $termlink Category link URL.
		 * @param int    $term_id  Term ID.
		 */
		$termlink = apply_filters( 'category_link', $termlink, $term->term_id );
	}

	/**
	 * Filters the term link.
	 *
	 * @since 2.5.0
	 *
	 * @param string $termlink Term link URL.
	 * @param object $term     Term object.
	 * @param string $taxonomy Taxonomy slug.
	 */
	return apply_filters( 'term_link', $termlink, $term, $taxonomy );
}