get_term_link() WP 2.5.0

Отримує УРЛ на сторінку архіву терміна (елемента таксономії). Теж саме посилання на розділ рубрики.

Функція повертає постійне посилання сторінку певного елемента таксономії (терміну).

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

Якщо параметр $term передається ID терміна, важливо переконається, що передається саме число (int). Наприклад, якщо ви передаєте змінну $term_id, її потрібно обробити так: (int) $term_id: інакше, якщо там рядок у вигляді числа '5', функція шукатиме термін з ярликом 5, а не по ID.

Основа для:
get_tag_link() ,
get_category_link()

Хуки з функції

Повертає

Строку|WP_Error. Посилання на елемент таксономії або об’єкт WP_Error, якщо елемент не існує.

Використання

get_term_link( $term, $taxonomy = '');
$term
(рядок/число/об’єкт/WP_Term) (обов’язковий)
ID/об’єкт/ім’я елемента таксономії, посилання на який потрібно отримати.
$taxonomy
(рядок)
Назву таксономії, посилання на елемент якої потрібно отримати.


За замовчуванням: ”

Приклади

0

#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>';
0

#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>';
0

#3 Приклад виведення посилання за назвою елемента таксономії

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

нотатки

  • Global. WP_Rewrite. $wp_rewrite WordPress rewrite component.

список змін

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

Код get_term_link() WP 6.0.2

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

	/**
	 * Filters permalink structure для термів перед тим, як переміщаються записи.
	 *
	 * @ Since 4.9.0
	 *
	 * @param string $termlink Струмочний архітектура для термічної taxonomy.
	 * @param WP_Term $term The term object.
	 */
	$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'));
	}

	// Back compat filters.
	if ( 'post_tag' === $taxonomy ) {

		/**
		 * Filters the tag link.
		 *
		 * @ Since 2.3.0
		 * @since 2.5.0 Deprecated in favor of {@see 'term_link'} filter.
		 * @since 5.4.1 Restored (un-deprecated).
		 *
		 * @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
		 * @since 2.5.0 Deprecated in favor of {@see 'term_link'} filter.
		 * @since 5.4.1 Restored (un-deprecated).
		 *
		 * @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 WP_Term $term Term об'єкт.
	 * @param string $taxonomy Taxonomy slug.
	 */
	return apply_filters( 'term_link', $termlink, $term, $taxonomy);
}

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

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