Polylang xml sitemap для мультимовного сайту , за рекомендаціями google

Блог Фрилансера 2 лип. 2019 р.
 Polylang xml sitemap для мультимовного сайту , за рекомендаціями google

Якщо у вас багатомовний сайт, дуже важливо правильно скласти sitemap для того, щоб пошукові системи знали, що у вас є кілька мов.


Виходячи з рекомендації google 

Якщо ви маєте кілька версій сторінки різними мовами або для різних регіонів, допоможіть Google ідентифікувати їх. Тоді в результатах пошуку будуть представлені ті версії ваших сторінок, які найкраще підходять для мови та регіону користувача.

Google може знайти альтернативні версії ваших сторінок, навіть якщо ви не зробите жодних дій, але бажано вказувати їх явно.

Повідомити Google про варіанти сторінки можна за допомогою файлу Sitemap. Для цього додайте елемент  , вказавши в ньому URL сторінки, а в дочірніх тегах  – посилання на всю її мовні та регіональні варіанти, включаючи саму сторінку. Таким чином, якщо у вас є три варіанти сторінки, у файлі Sitemap буде три елементи з трьома ідентичними дочірніми тегами.

Правила для файлів Sitemap

  • Вказуйте простір імен xhtml таким чином:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • Створюйте окремий елемент  для кожного URL.
  • У кожному елементі  має бути дочірній елемент , в якому вказується URL сторінки.
  • У кожному елементі  має бути дочірній елемент код мови">, в якій перераховуються всі варіанти сторінки,  ;включаючи поточну.  Порядок дочірніх елементів  не має значення, але ви можете дотримуватися певної послідовності, щоб було простіше відслідковувати помилки.

 

 Для реалізації будемо використовувати плагін XML Multilanguage Sitemap Generator. Він добре підходить, і сумісний з плагіном polylang, але є кілька мінусів.

-Нет  hreflang для мови за замовчуванням (це не обов'язково, але рекомендовано google).

- Немає сторінок інших мов

Щоб це все виправити, потрібно трохи підправити плагін!!

Всі зміни робимо в папці xml-multilanguage-sitemap-generator\includes\loop\polylang\

файл polylang-post-type.php

$query = new WP_Query( array( 'post_type' => $post_type, 'post__not_in' => $idToExclude, 'lang' => $default_polylang_lang, 'posts_per_page' => -1 )

Замінити на:

$query = new WP_Query( array( 'post_type' => $post_type, 'post__not_in' => $idToExclude, 'posts_per_page' => -1 ) );

Код нижче можна закоментувати (він видаляє мову за замовчуванням) 

if (($key = array_search($default_polylang_lang, $excluded_default_langs)) !== false) {
            unset($excluded_default_langs[$key]);
}

 

файл polylang-taxonomies.php

$terms = get_terms(array(
    'taxonomy' => $taxonomy,
    'hide_empty' => true,
    'lang' => $default_polylang_lang
));

Замінити на:

$terms = get_terms(array(
    'taxonomy' => $taxonomy,
    'hide_empty' => true
));

Закоментувати також код:

/*if (($key = array_search($default_polylang_lang, $excluded_default_langs)) !== false) {
            unset($excluded_default_langs[$key]);
        }*/

Код внизу файлу:

 $term_map = array(
            'permalink' => get_term_link( $default_lang_term_id ),
            'changefreq' => $changefreq_ar,
            'priority' => $priority_ar,
            'languages' => $languages_arg,
        );

Замінити на:

$term_map = array(
            'permalink' => $lang_url,
            'changefreq' => $changefreq_ar,
            'priority' => $priority_ar,
            'languages' => $languages_arg,
        );

Все.тепер карта буде за рекомендацією google

Приклад карти



  
    https://expertseeds.com.ua/product/prdsolnechnik-amato-granstar-50-gr/
    
    
    weekly
    1
  
  
    https://expertseeds.com.ua/ru/product/sonyashnik-amato-granstar-50-gr/
    
    
    weekly
    1