У чудового плагіна для WordPress він називається SEO by Yoast або навіть іноді WordPress-seo плагін, хороший найвідоміший і став уже стандартом де факто в своїй ніші. Але як завжди у нього знайшовся один фатальний недолік (відомий жарт) але проблема пов'язана не з плагіном, а з Яндексом про це далі і піде мова.
Добу поста описати наступним чином, зареєструвавшись в сервісі для вебмайстрів від яндекса - webmaster.yandex.ru з'явився один цікавий інструмент який покликаний показати можливі проблеми в індексації сайту, він перевіряє багато аспектів в тому числі SitemapXML сайту і якщо у вас карта сайту створюється за допомогою плагіна Yoast SEO то панель яндекс вебмайстер в розділі «Можливі проблеми» видасть що то типо це
«В одному або декількох файлах Sitemap виявлені помилки, які можуть вплинути на обробку файлів індексується роботом.»
Якщо подивитися подробиці з'ясується що краулер Яндекса на здатний розпізнати тег xml
рядок з помилкою виглядає як то так
Є два сценарії розвитку подій:
1. так як Яндекс оцінює це як «Можливі проблеми» і синтаксис xml як я з'ясував не порушений, то можна просто забити і нічого дивного не станеться, я сам так робив і нічого страшного не сталося, Яндекс
НЕ пессімізіровал мої сайти через це.
2. Проте хороше рішення - намагатися виправити ситуацію і прибрати всі проблемні для яндекса теги з SitemapXML, цей можна зробити наприклад якщо вам не важлива наявність в будь-якому вигляді індексування гуглом карти сайту вашого сайту саме з доданими картинками.
Трохи погуглити можна можна знайти кілька поганих прикладів вирішення цієї проблеми раз, два. три і холівар на серч
Перших поганий тим що там там пропонується хакнуть Вендорний код плагіна і осадити проблем при кожній оновленні плагіна, які виходять регулярно.
Другий використовує трохи дивний код який створює екземпляр класу WPSEO_Sitemap_Timezone, вже напевно не повинно зламатися але все ж є ймовірність що код цього класу зміниться в подальших що предмет
до помилок до кате сайту які буде важко помітити.
За третин посилання пропонується не використовувати Yoast SEO для створення карти сайту, але мене він подобається не бачу сенсу страждати якщо проблема не в мені а в Яндексі
Тому я вирішив написати свій код який би видалив непотрібний тег і при оновленні точно б нічого не поламав, зробити я це вирішив за допомогою однієї регулярки, анонімної функції і фільтра який знайшов в плагіні Yoast SEO
* Файл можна назвати yoast-seo-helper.php наприклад це не важливо.
Є цінний додаток про те як перевірити чи працює наш сниппет.
Для цього відключаємо кеш на сайті відкриваємо нове вікно в браузері в режимі інкогніто, дивимося в вебмайстрів Яндекса на який sitemap він лаявся, припустимо це url
значить відкриваємо його в приватній вкладці
Якщо такого рядка не знайшлося значить у нас все вийшло, натискаємо в вебмайстрів кнопку «перевірити»
Поділитися:
Вітаю, Володимир. Для мене ця проблема теж вельми актуальна. У мене преміум версія плагіна Yoast SEO і все методи вирішення питання, знайдені до цього, були не дієві, тому що код відрізняється від версії простий. Хотів, з вашого дозволу, уточнити - файл, який створюється в каталозі wp-content / plugins /, повинен називатися якось виразно і чи потрібно його підв'язувати десь в структурі сайту? Сподіваюся на відповідь. З вдячністю, Павло.
Трохи оновив пост - Файл можна назвати yoast-seo-helper.php наприклад це не важливо.
Важливим є те що якщо його закинути в wp-content / plugins / то його потім потрібно активувати як звичайний плагін. а якщо в wp-content / mu-plugins / то він сам активується і вимкнути можна буде тільки видаливши файл.
Мені другий зручніше.
Якщо в преміум версії є фільтр 'wpseo_sitemap_url' то з ним теж запрацює в звичайній версії цей фільтр тут лежить wordpress-seo / inc / sitemaps / class-sitemaps-renderer.php рядок 274. можна порівняти з преміум.
Щиро дякую за відповідь. У мене немає каталогу wp-content / mu-plugins /. але його, як розумію. можна створити під файл. Що відносно wordpress-seo / inc / sitemaps / class-sitemaps-renderer.php. то такого немає в преміум версії. є тільки wordpress-seo / inc / class-sitemaps.php. Ви. як я розумію, вже розібралися, що я не особливо розуміє в цій справі і тільки виходячи з цього звертаюся за допомогою. Спасибо большое за участь і якщо щось зможете підказати, перш ніж я спробую ваш метод. буду дуже вдячний!
День добрий, Володимир. Результат не дуже - сайт перестає відображатися і на білому екрані цей напис
Parse error: syntax error, unexpected 'return' (T_RETURN) in /home/bpave748/public_html/wp-content/mu-plugins/yoast-seo-helper.php on line 14
це тому що при оновленні поста я частина сниппета випадково стер,
ось так спробуйте: