Атрибут title в ссылках из функции the_terms()

Мне потребовалось добавить атрибут title к ссылкам, генерируемым функцией the_terms(), которая выводит список термов поста (категорий и тегов например).

По умолчанию функция выводит код типа:


А мне хотелось, чтобы в ссылке был атрибут title, который содержал бы название родительского терма. Например, у нас есть иерархическая таксономия, содержащая список стран и городов, и пост относится к терму “Москва”. Тогда в атрибуте title у нас должно быть написано “Россия, Москва”. Парился я долго, искал элегантное решение, но почему-то все элегантные решения требовали очень много кода =( Тогда я сделал грязно, но быстро =) Вот так:

add_filter ('term_link', 'add_title_attribute', 20, 3);
function add_title_attribute($termlink, $term, $taxonomy) {
	if ($taxonomy == 'places' AND $term->parent) {
		$parent = get_term($term->parent, 'places');
		return $termlink.'" title="'.$parent->name.', '.$term->name;
	}
	return $termlink;
}

Это нужно засунуть в functions.php вашей темы. Тут происходит проверка названия таксономии, если она называется “places”, и если у нее есть родитель ($term->parent) то мы добавляем к URL терма ($termlink) текст, закрывающий атрибут href (то есть, кавычки), и дописываем title с нужным содержимым, но без закрывающей кавычки.

Я предупреждал, что код грязный, однако он пока работает везде, где применен. В идеале нужно фильтровать терм, добавлять в его объект новый атрибут, затем фильтровать функцию, генерирующую код ссылки, и добавлять туда title.

Выяснилось, что такая комбинация конфликтует с функцией wp_tag_cloud() которая создает облако тегов (термов). Я это не сразу заметил, так как у меня написана своя функция построения облака, и я использую ее, если есть такая необходимость. Кто решит эту проблему — черкните плиз в комменты.