# Функция get_term_link() │ WP 2.5.0
Функция get_term_link() позволяет получить URL-адрес страницы архива для элемента таксономии (таксономического элемента). Этот адрес соответствует ссылке на страницу категории.
Функция возвращает постоянную ссылку на страницу конкретного элемента таксономии. Это особенно полезно, когда вы создаете свою собственную таксономию и вам нужно получить ссылку на любой из её элементов.
## Как использовать функцию
Для корректной работы передавайте идентификатор термина в параметре $term в виде числа (целое число). Например, если вы передаете переменную $term_id, обработайте её так: (int) $term_id. Если переменная содержит строку числа, например '5', функция будет искать элемент с слагом 5, а не с идентификатором 5. Это может привести к ошибке.
```php
$term_id = 5; // ID элемента таксономии
$term_link = get_term_link((int) $term_id, 'your_taxonomy'); // Замените 'your_taxonomy' на нужное имя таксономии
echo 'Ссылка на раздел с ID ' . $term_id . '';
Параметры функции
get_term_link( $term, $taxonomy );
$term: (обязательный) Объект WP_Term, ID или слаг термина, для которого нужно получить ссылку.$taxonomy: (строка) Имя таксономии. По умолчанию: '' (пустая строка).
Примеры использовани��
Пример 1: Отображение ссылки на страницу архива элемента таксономии
$term_id = 5; // ID элемента таксономии
$term_link = get_term_link( $term_id, 'tax_name' ); // Замените 'tax_name' на ваше имя таксономии
echo 'Ссылка на раздел с ID ' . $term_id . '';
Пример 2: Отображение ссылки на элемент по его имени
$term_slug = 'other'; // не забудьте передать слаг
$term_link = get_term_link( $term_slug, 'tax_name' ); // Замените 'tax_name' на ваше имя таксономии
echo 'Ссылка на раздел ' . $term_slug . '';
Пример 3: Убедитесь, что $term_id — это целое число
Если переменная $term_id уже известна и передается как строка, то её нужно преобразовать в целое число. В противном случае функция интерпретирует её как слаг термина.
$term_id = '5'; // строка, содержащая ID
$term_link = get_term_link((int) $term_id, 'tax_name'); // Замените 'tax_name' на ваше имя таксономии
echo 'Ссылка на раздел с ID ' . $term_id . '';
Возвращаемое значение
Функция возвращает:
- Строку: URL-адрес архива таксономического элемента, если всё успешно.
- WP_Error: если термин не существует.
Примечания
- Глобальная переменная:
WP_Rewrite— компонент переписывания в WordPress.
Изменения
- Версия 2.5.0: функция была введена.
Код функции get_term_link()
Функция реализована в файле wp-includes/taxonomy.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', __( 'Пустой термин.' ) );
}
if ( is_wp_error( $term ) ) {
return $term;
}
$taxonomy = $term->taxonomy;
$termlink = $wp_rewrite->get_extra_permastruct( $taxonomy );
// Вставка фильтров для структуры постоянной ссылки
$termlink = apply_filters( 'pre_term_link', $termlink, $term );
$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 ( ! empty( $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' ) );
}
// Фильтры для обратной совместимости
if ( 'post_tag' === $taxonomy ) {
$termlink = apply_filters( 'tag_link', $termlink, $term->term_id );
} elseif ( 'category' === $taxonomy ) {
$termlink = apply_filters( 'category_link', $termlink, $term->term_id );
}
return apply_filters( 'term_link', $termlink, $term, $taxonomy );
}
Связанные функции
edit_bookmark_link()edit_comment_link()get_attachment_link()get_blank_page_link()get_permalink()get_tag_link()
Таксономии: категории, теги и т. д.
register_taxonomy()get_taxonomy()taxonomy_exists()