Устранение ошибки микроформатов hAtom (author, entry-title, updated) в Гугл Search Console

Опубликовано ,

Всем привет! Сегодня не будет кучи текста — просто пара строчек кода для удаления лишней микроразметки microformats.org и комментарии к ним.

Вот такое предупреждение вы можете увидеть в вебмастере Гугла в разделе Вид в поиске / Структурированные данные:

Пример ошибки в микроразметке в Гугле
Ошибки микроформатов на примере вебмастера валяльного сайта (можно увеличить)

Содержание:

  1. Удаление лишней микроразметки
  2. Добавление необходимых полей

Как видите, можно пойти 2 путями — просто удалить элементы лишней микроразметки или добавить все требуемые Гуглом поля. Гугл вообще в последнее время что-то много требовать стал =)

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

Это ошибки микроданных hAtom, которые Гугл подхватывает на большей части сайтов на ВордПресс (они выводятся автоматическими функциями).

Удаление лишних структурированных данных

По этому пути стоит пойти когда лишнего кода совсем не много. На rat-felt.ru стоит моя тема, так что лишние элементы там остались только среди генерируемых автоматически.

Можно проверить любую статью на сайте в валидаторе микроразметки Гугла — Testing Tool

Микроформаты в валидаторе
Микроформат hAtom в валидаторе Гугла

Как видите, мне не имеет смысла внедрять всю остальную разметку — проще удалить имеющуюся. В данном случае в микроформат включаются рубрика и метка

А вот класс, который нам потребуется удалить:

Функция для файла functions.php (не забудьте про бэкап):

<?php
/* 
 * удаление микроформатов hAtom
*/
function remove_hentry( $classes ) {
		$classes = array_diff($classes, array('hentry'));
		return $classes;
}
add_filter( 'post_class', 'remove_hentry' );

Если теперь почистить кеш и снова проверить в валидаторе, подпункт hentry исчезнет.

 Добавление необходимых полей

Второй вариант — вручную или при помощи функции добавить нужные классы в код. Темы ВодрПресс у всех разные, поэтому поиск необходимых строк вручную может занять значительное количество времени.

Функции автоматической замены найдены на просторах англоязычного интернета (официальный форум WordPress).

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

Для начала немного чистим тему:

<?php
/* 
Удалить класс hentry отовсюду, кроме страниц записей
 */
function remove_hentry( $classes ) {
	if( !is_single() ) {
		$classes = array_diff($classes, array('hentry'));
		return $classes;
	} else {
		return $classes;
	}
}
add_filter( 'post_class', 'remove_hentry' );

Следующий код добавить в конец статьи невидимые строки с микроданными: именем автора, названием статьи и дату обновления статьи.

<?php
/**
 * Исправление ошибок hAtom в Вебмастере Гугла
 */
function add_hatom_data($content) {
    $t = get_the_modified_time('F jS, Y');
    $author = get_the_author();
    $title = get_the_title();

    if (is_singular()) {
        $content .= '<div class="hatom-extra" style="display:none; visibility:hidden;">Статья <span class="entry-title">'.$title.'</span> была изменена: <span class="updated"> '.$t.'</span> автором <span class="author vcard"><span class="fn">'.$author.'</span></span></div>';
    }
    return $content;
}
add_filter('the_content', 'add_hatom_data');

Чистим кеш и проверяем в валидаторе и коде сайта:

Микроформаты автор, статья и дата обновления
Вывод нужных строк в коде сайта

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

Для этого понадобятся файлы single.php или content-single.php

Находим вывод автора в теме и добавляем соответствующий атрибуты author vcard и fn:

<span class="item-author author vcard">
	<span class="item-author-name fn" itemprop="name">
		<?php the_author(); ?>
	</span>
</span>

В теге H1 находится заголовок статьи, к нему добавляется entry-title:

<h1 class="entry-title">
	<?php the_title(); ?>
</h1>

И последнее — дата обновления статьи, она не выводится в большинстве тем, поэтому сразу сделаем ее невидимой, добавив атрибут updated:

<time class="updated" style="display:none" datetime="<?php the_time('c'); ?>">
    <?php the_time('j.m.Y'); ?>
</time>

Вот и все, через некоторое время проверьте Вебмастер, ошибки должны исчезнуть =)

6 комментариев

  1. Лидия (tytvkysno.ru)

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

    Ответить
    1. Анастасия

      Добрый день) Вопросы задавайте, с удовольствием отвечу.
      Шаблон у вас, смотрю, от Гудвина = они очень даже хороши, но микроразметки в них нет изначально

      Ответить
  2. Сергей

    Немного не понял что все-таки делать с этими vcard и Fn — нужны они или нет? кулинарную микроразметку включил но изза этих vcard сайт не выходит как надо в результатох поиска и валидатор яндекса показывает ошибки.

    Ответить
    1. Анастасия

      Здравствуйте, это устаревшая разметка комментариев, надо удалять ее из кода

      Ответить
  3. Sergey

    Доброго дня, уже который день бьюсь и не могу исправить ошибки, в яндексе пару ошибок, а в гугле нет, но говорит что нет автора и т.д. Можете глянуть? спасибо

    Ответить
    1. Анастасия

      Здравствуйте, разметка hentry, что у вас, уже устарела

      Ответить

А что вы думаете по этому поводу?

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

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