WebTutorWordPressМатериалы в карте сайта Yoast SEO в зависимости от языка

Материалы в карте сайта Yoast SEO в зависимости от языка

Возможно, мастера, работающие с плагином Yoast SEO и мультиязычностью на сайте сталкивались с вопросом, когда в карте сайта главного языка содержатся все другие языки, а вот в картах других языков содержатся только свои статьи, соответствующие этому языку. Сейчас вы узнаете, как можно оставить материалы в карте сайта Yoast SEO в зависимости от языка.

Главная карта сайта содержит все языки

То есть что получается, если вы введете адрес карты сайта такой:

https://web-tutor.net/sitemap_index.xml

то все ссылки на карты разделов и типов контентов:

Карта сайта

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

Правка вывода карты сайта плагином Yoast SEO

Казалось, бы удобно, 1 карта сайта и все переводы сразу здесь. Но такое положение вещей может не устраивать  клиентов или самого вебмастера.  Если вы хотите, чтобы каждой карте сайта соответствовали свои языковые переводы, что удобно для разделения контента, то необходимо немного добавить кода в вашу тему, а именно в functions.php, или в ваш собственный модуль. Вот код, который правит выведение карты сайта плагином Yoast SEO для главного языка сайта, чтобы в его карте не было посторонних языков:

// Корректируем выведение карты сайта плагином Yoast - для языка (en), установленного по умолчанию
// на нашем сайте, все другие языковые переводы из карты будут исключены
if ( 'en' == ICL_LANGUAGE_CODE ) {
    // Задействовали специальный хук плагина, для доступа к формированию карт
    add_filter('wpseo_sitemap_entry', 'exclude_lang_from_main_sitemap', 10, 3 );
}
function exclude_lang_from_main_sitemap ( $url, $type, $post ){
    
    global $sitepress;
    $default_language = $sitepress->get_default_language();
 
    $post_lang = wpml_get_language_information( null, $post->ID );
 
    // Фильтруем языки
    if ( $post_lang['locale'] == $default_language ) {
        return $url;
    } else {
        return false;
    }
}

Такой вот не сложный код поможет вам отфильтровать файл карты сайта для любого языка.

 

Просмотров: 38

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Технологии WEB

CMS

Расширения

Сервисы