Используем Primary-рубрику Yoast SEO в теме WordPress

Используем «Primary» рубрику Yoast SEO в теме WordPress

1 сентября 2016 134

Пожалуй, я продолжу свой рассказ о рубриках WordPress, которым были посвящены две мои недавние публикации. И сегодня я расскажу каким образом в WordPress можно присвоить записи несколько рубрик, определить среди них главную и оперировать ей во фронтенде.

Reg.ru: Регистрируем домены в любой зоне мира
Reg.ru: Регистрируем домены в любой зоне мира

WordPress по-умолчанию позволяет присваивать записям несколько рубрик, что очень даже правильно, логично и удобно. Но очень часто возникает такая ситуация, что записи присваивается несколько рубрик, а дизайн фронтенда, например, рассчитан только на одну-две рубрики. Вообще сложно представить ситуацию когда имеется необходимость вывода в цикле всего массива присвоенных записи рубрик. К сожалению, нативных средств выбора главной рубрики и второстепенных в WordPress нет. Поэтому, изобретались какие-то костыли, выводилась лишь первая присвоенная рубрика, устанавливались какие-то специализированные плагины и т.д.

В марте этого года, с очередным релизом небезызвестного плагина Yoast SEO, ситуация внезапно изменилась. С версии 3.1 у плагина появилась функция, позволяющая помечать у записи основную, т.н. «Primary» рубрику. Напомню, Yoast SEO — популярный бесплатный плагин поисковой оптимизации для WordPress. На мой взгляд, лучший в своём классе, давно входит в мой маст хэв плагинов WordPress.

Yoast SEO — очень функциональный плагин с невероятным количеством полезных функций, полное описание которых вряд ли поместится в одну статью. Плагин безупречно справляется со всеми возложенными на него задачами. А теперь ещё и отпала необходимость в костылях для рубрик.

Как задействовать основную рубрику в теме?

Для этого воспользуемся небольшим сниппетом.

Суть его работы заключается в следующем. Если установлен Yoast SEO, запись проверяется на наличие Primary Category. И если она есть, то выводится в качестве рубрики записи. Если условие не выполняется, тогда выводится по-старинке первая рубрика записи. Кроме этого, с помощью переменной $useCatLink можно указать нужно ли делать рубрику ссылкой.

Вместо рубрик в переменной $yourTaxonomy можно задать любую другую таксономию.

$yourTaxonomy = 'category'; // Задаем таксономию

$category = get_the_terms( $postId, $yourTaxonomy );
$useCatLink = true; // Делаем рубрики ссылками

if ($category){

	$category_display = '';
	$category_link = '';
	
	if ( class_exists('WPSEO_Primary_Term') )	{

		$wpseo_primary_term = new WPSEO_Primary_Term( 'event_cat', get_the_id() );
		$wpseo_primary_term = $wpseo_primary_term->get_primary_term();
		$term = get_term( $wpseo_primary_term );

		if (is_wp_error($term)) { 

			$category_display = $category[0]->name;
			$category_link = get_bloginfo('url') . '/' . 'event-category/' . $term->slug;

		} else { 

			$category_display = $term->name;
			$category_link = get_term_link( $term->term_id );

		}
	} 
	else {

		$category_display = $category[0]->name;
		$category_link = get_term_link( $category[0]->term_id );

	}
	if ( !empty($category_display) ){

		if ( $useCatLink == true && !empty($category_link) ){

			echo '<span class="post-category">';
			echo '<a href="'.$category_link.'">'.$category_display.'</a>';
			echo '</span>';

		} else {

			echo '<span class="post-category">'.$category_display.'</span>';

		}
	}	
}

Можно пойти немного дальше, создать в functions.php функцию и при необходимости обращаться к ней из любого места темы. В циклах, например.

Кстати, чтобы отключить в Yoast SEO возможность выбора основной рубрики, можно воспользоваться таким фильтром:

add_filter( 'wpseo_primary_term_taxonomies', '__return_empty_array' );

И всё.

Автор: Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе WordPress.

Комментарии

Разгоните свой WordPress

Хостинг-провайдер номер один в России — REG.RU

Подробнее