Yoast SEO Неизвестный тег image:image в яндекс вебмастере

У замечательного плагина для WordPress он называется SEO by Yoast или даже иногда WordPress-seo плагин, хороший самый известный и стал уже стандартом де факто в своей нише. Но как обычно у него нашелся один фатальный недостаток (известная шутка) но проблема связана не с плагином, а с Яндексом об этом далее и пойдет речь.

Сут поста описать следующем образом, зарегистрировавшись в сервисе для вебмастеров от яндекса — webmaster.yandex.ru появился один интересный инструмент который призван показать возможные проблемы в индексации сайта, он проверяет многие аспекты в том числе SitemapXML сайта и если у вас карта сайта создается при помощи плагина Yoast SEO то панель яндекс вебмастер в разделе «Возможные проблемы» выдаст что то типо это

«В одном или нескольких файлах Sitemap обнаружены ошибки, которые могут повлиять на обработку файлов индексирующим роботом.»

яндекс вебмастер ошибка - Неизвестный тег image:image yoast seo sitemap

Если посмотреть подробности выяснится что краулер Яндекса на способен распознать тег xml
строка с ошибкой выглядит как то так

...image:image...

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

Есть два сценария развития событий:

1. так как Яндекс оценивает это как «Возможные проблемы» и синтаксис xml как я выяснил не нарушен, то можно просто забить и ничего странного не произойдет, я сам так делал и ничего ужасного не случилось, Яндекс
не пессимизировал мои сайты из-за этого.

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

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

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

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

По третей ссылки предлагается не использовать Yoast SEO для создания карты сайта, но мене он нравится не вижу смысла страдать если проблема не во мне а в Яндексе

Поэтому я решил написать свой код который бы удалил ненужный тег и при обновлении точно бы ничего не поломал, сделать я это решил при помощи одной регулярки, анонимной функции и фильтра который нашел в плагине Yoast SEO

<?php
/*
* Plugin Name: Yoast SEO Helper
* Plugin URI: https://alkoweb.ru/?p=1018
* Version: 1.0.0
* Author: petrozavodsky
* Author URI: https://alkoweb.ru
*/

<?php
add_filter(
    'wpseo_sitemap_url',
    function ($output, $url) {
        $output = preg_replace("'<image:image[^>]*?>.*?</image:image>'si", '', $output);
        return $output;
    },
    10,
    2
);

* Файл можно назвать yoast-seo-helper.php например это не важно .

Что происходит после генерации готового XML и прямо перед его выводом моя регулярка вырезает все что находится внутри тега включая сам тег, так же она вырежет тег не зависимо от наличия у него атрибутов (а вдруг) и уже после этого готовый код отдается клиенту.
Вставить этот сниппет я предлога в отдельный файл расположенный в каталоге wp-content/mu-plugins/ не вкоем случае не в function.php активной темы как это бывает, почему так я уже как то писал в этом блоге , если интересно можете почитать предыдущие посты или крайнем случае спросить в комментариях.

Есть ценное дополнение о том как проверить работает ли наш сниппет.

Для этого отключаем кеш на сайте открываем новое окно в браузере в режиме инкогнито, смотрим в вебмастере яндекса на какой sitemap он ругался, допустим это url

https://site.ru/post-sitemap1.xml

значит открываем его в приватной вкладке

view-source:https://brodude.ru/post-sitemap1.xml[.code]
ищем там такую строку image:image, для надежности искать можно воспользовавшись поиском браузера по содержимому нажав (ctrl+f) .

Возможные проблемы сайта Яндекс вебмастер ...image:imag...

Если такой строки не нашлось значит у нас все получилось, нажимаем в вебмастере кнопку «проверить»

 

P.S.  как подсказали в комментариях есть способ проще   

add_filter( 'wpseo_xml_sitemap_img', '__return_false' );

UPD: Евгений в комментария пишет что первый вариант кода тоже имеет свои плюсы, думаю можно поверить ему на слово.

Источник: https://alkoweb.ru/yoast-seo-neizvestnyj-teg-image-image-v-yandeks-vebmastere/

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

%d такие блоггеры, как: