Дек
2
4

Сниппеты для хлебных крошек Yoast SEO – редактирование элементов, заголовка

Хлебные крошки Yoast SEOУже много лет я использую модуль Yoast SEO для всего, что связано с оптимизацией вебстраниц в Вордпресс. Это самое крутое и функциональное решение в данной сфере с кучей дополнительных возможностей, позволяющих, например, вручную выбирать основную категорию записи и даже создавать хлебные крошки. О последнем пункте поговорим подробнее, точнее рассмотрим парочку сниппетов, помогающих модифицировать их вывод на сайте. Иногда бывают ситуации, когда надо добавить еще один блок ссылок или убрать лишний.

Для вывода хлебных крошек используется следующий код, который помещаете в нужное место соответствующего файла шаблона (single.php, page.php, header.php или другой в зависимости структуры от вашей темы):

if ( function_exists('yoast_breadcrumb') ) {
	yoast_breadcrumb('<p id="breadcrumbs">','</p>');
}

Разумеется данную функцию нужно будет также включить в настройках модуля в админке (тамже задаются всяческие ее параметры).

Хлебные крошки Yoast

Исходя из этих значений и будет автоматически сформирован путь по сайту (breadcrumb) для каждой веб-страницы. Однако при редактировании постов в блоке настроек Yoast SEO имеется пункт, позволяющий задать уникальный заголовок.

Хлебные крошки Yoast

Это удобно для разовых правок, но, когда требуется сделать глобальные изменения для целого ряда записей, сниппеты могут быть эффективнее.

Полезные сниппеты хлебных крошек Yoast

Для начала пару моментов:

  • Редактировать выводимую плагином информацию мы будем через фильтр wpseo_breadcrumb_links.
  • Вы можете использовать условные выражения дабы внедрять их только в определенных страница/разделах.

Как удалить последний элемент хлебных крошек

Судя по всему, тут есть 2 варианта решения. У меня отлично сработал этот:

function remove_breadcrumb_title( $link_output) {
	if(strpos( $link_output, 'breadcrumb_last' ) !== false ) {
		$link_output = '';
	}
   	return $link_output;
}
add_filter('wpseo_breadcrumb_single_link', 'remove_breadcrumb_title' );

Но можно попробовать и так:

add_filter( 'wpseo_breadcrumb_links', 'db_wpseo_breadcrumb_links' );
function db_wpseo_breadcrumb_links( $links ) {
	if( sizeof($links) > 1 ){
		array_pop($links);
	}
	return $links;
}

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

Удаление ссылки из элемента

Источник решения здесь. Добавляйте в файл функций следующую конструкцию.

add_filter( 'wpseo_breadcrumb_single_link' ,'wpseo_remove_breadcrumb_link', 10 ,2);
function wpseo_remove_breadcrumb_link( $link_output , $link ){
    $text_to_remove = 'Products';
 
    if( $link['text'] == $text_to_remove ) {
      $link_output = '';
    }
 
    return $link_output;
}

Здесь в качестве значения переменной text_to_remove указываете для какого объекта надо убрать линк. Если нужно “пройтись” по нескольким значениям, используйте конструкцию:

add_filter( 'wpseo_breadcrumb_single_link' ,'wpseo_remove_breadcrumb_link', 10 ,2);
function wpseo_remove_breadcrumb_link( $link_output , $link ) {
    $text_to_remove = [
    	'Products',
    	'Товари'
    ];
 
    if ( in_array( $link['text'], $text_to_remove, true ) ) {
	return;
    }
    return $link_output;
}

Добавление новой ссылки в путь по сайту

На этой вебстранице есть сразу парочку вариантов кода. Первый из них пригодится для WooCommerce магазина, если вы захотите добавить в конструкцию ссылку на каталог товаров (Shop).

add_filter( 'wpseo_breadcrumb_links', 'wpseo_breadcrumb_add_woo_shop_link' );
function wpseo_breadcrumb_add_woo_shop_link( $links ) {
    global $post;
    if ( is_woocommerce() ) {
        $breadcrumb[] = array(
            'url' => get_permalink( woocommerce_get_page_id( 'shop' ) ),
            'text' => 'Shop',
        );
        array_splice( $links, 1, -2, $breadcrumb );
    }
    return $links;
}

Условие is_woocommerce позволяет хаку срабатывать только для данного плагина.

Второй вариант выполняет вставку ссылки на главную страницу блога (/blog/), но, разумеется, также допускается использование любых других переменных.

add_filter( 'wpseo_breadcrumb_links', 'yoast_seo_breadcrumb_append_link' );
function yoast_seo_breadcrumb_append_link( $links ) {
    global $post;
    if ( is_single ( 123456 ) ) {
        $breadcrumb[] = array(
            'url' => site_url( '/blog/' ),
            'text' => 'Blog',
        );
        array_splice( $links, 1, -2, $breadcrumb );
    }
    return $links;
}

Важно!

  • Здесь в is_single подставлен ID конкретной записи, но вы можете его не указывать (тогда код будет срабатывать для всех постов).
  • Если захотите применить его для страниц, то юзайте is_page, для кастомных сущностей есть is_singular, в которую подставляется нужный тип постов post_type_slug.
  • Допускается указание списка через массив is_single( array( 123, 456, 789 ) ).

Считываем тайтл (title) от Yoast SEO

Плагин позволяет задавать значение МЕТА-поля Title — это делается внутри админки в одноименном блоке настроек при создании/редактировании поста/страницы. Если вдруг нужно считать это значение, то следующие приемы вам помогут.

В шаблоне записи/поста:

echo get_post_meta(get_the_ID(), '_yoast_wpseo_title', true);

В архиве:

$titles = get_option( 'wpseo_titles' );
$title  = $titles['title-ptarchive-POST_TYPE'];
 
echo apply_filters( 'the_title', $title );

Для таксономий:

$cat_id = get_query_var( 'cat' );
$meta   = get_option( 'wpseo_taxonomy_meta' );
 
$title  = $meta['category'][$cat_id]['wpseo_title'];
 
echo apply_filters( 'the_title', $title );

Для тегов:

$tag_id = get_query_var( 'tag' );
$meta   = get_option( 'wpseo_taxonomy_meta' );
 
$title  = $meta['post_tag'][$tag_id]['wpseo_title'];
 
echo apply_filters( 'the_title', $title );

Я так понимаю, данные считываются внутри цикла Loop, как и для обычных заголовков. Вы можете совместить этот прием с самым первым сниппетом из текущей заметки дабы выводить в хлебных крошках не базовый заголовок поста, а именно Title. Если знаете еще какие-то хаки — делитесь ими ниже.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 14, средний балл: 4,43 из 7)
Загрузка...

категория Категории: Плагины; Хаки и секреты;
теги Теги: , , , , , , .

комментария 4 к статье “Сниппеты для хлебных крошек Yoast SEO – редактирование элементов, заголовка”

  • Дмитрий   14.01.2020

    Отличное руководство, спасибо! Но у меня вот такая дилема: на странице shop хк Главная-Товары. как переименовать Товары в Услуги или Предложения??? Буду благодарен за ответ!

  • Tod   15.01.2020

    Дмитрий, думаю, что решение в переводе. Если не хотите тратить время на скачивание/изучение программы Poedit, то проще сделать перевод через gettext функцию. Но тут есть риск, что заменится аналогичная фраза и в других местах.

  • Валерий   22.05.2020

    Привет!
    Обновился с 11 сразу на последнюю на данный момент 14 версию и обнаружил, что теперь хлебные крошки не показывают номер страницы. Пример для лучшего понимания: заходим в раздел на сайте «Новости», переходим на вторую страницу с новостями . Раньше было «Сайт» > «Новости» > «Страница 2». А сейчас не показывает в хлебных крошках Yoast «Страница *». Как вернуть показ?

  • Tod   22.05.2020

    Валерий, тут 2 варианта — либо откатиться на прошлую версию плагина либо искать хаки по типу такого.

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Поиск:
Последние посты
Лучшее в категории

Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости