» » » Обновление микроразметки — Гугл, Яндекс и Schema.org
logotip

Обновление микроразметки — Гугл, Яндекс и Schema.org

Всем привет! Сегодня на seo-mayak.com вновь актуальная тема новая микроразметка schema.org.

Говорить мы будем в основном о поисковой системе Гугл, но и Яндекс не обойдем стороной. Разберем все нововведения schema.org и выясним отношение к ним ведущих поисковиков.

Вы в курсе, что Гугл обновил свое понимание schema.org? Я долго подбирал заголовок для данного материала и вот что подумал.

Что, если бы у меня была возможность задавать несколько заголовков для статьи. Так вот, если бы у меня была такая возможность, то я бы составил следующие заголовки:

Начнем с этого: «Schema.org не дает веб-мастерам спокойно спать».

Можно так: «Новая микроразметка — кто компенсирует затраты на фрилансеров».

Или так: «Обновление микроразметки — Яндекс и Гугл снова не договорились».

microrazmetka-2.1

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

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

А то что получается. Многие рядовые веб-мастера, которые не сильно разбираются в кодах, потратили свои кровные на оплату фрилансерам, чтобы те помогли им внедрить злополучную микроразметку. А что вышло в итоге? Все, что раньше пропагандировалось теперь не работает!

Лирика

Мне вообще удивляет заявленная позиция поисковиков в вопросе микроразметки.

Яндекс помощь: Цель семантической разметки – сделать интернет более понятным, структурированным и облегчить поисковым системам и специальным программам извлечение и обработку информации для удобного её представления в результатах поиска.

Т.е, МЫ, за свои деньги, должны облегчить поисковым системам жизнь. Умно! Ничего не скажешь.

Еще мне понравилось определение Википедии, хотя, конечно, она здесь не причем, но все же:

Основной целью schema.org является помощь веб-разработчикам в создании качественных метаданных, что, в свою очередь, позволяет улучшать качество поиска.

О как! Оказывается мироразметка — это помощь веб-разработчикам, к коим я и себя отношу. Ну что же, спасибо за помощь, теперь не зарастет народная тропа. Но мне искренне жаль тех людей, которые во второй раз будут обращаться ко мне по вопросам внедрения микроразметки.

А что же Гугл? Гугл в своем репертуаре! Он заявляет, мол мы же для Вас лучше делаем, внедряйте микроразметку и наш робот будет лучше понимать Ваши сайты. Заметьте, что пока все нежно и ласково.

Один старый политик как-то сказал, как мне показалась, очень мудрую вещь.

Понимание и доверие — это язык любви, который к политике не имеет никакого отношения.

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

Напрашивается такой вопрос. Что же будет в недалеком будущем с теми сайтам, которые проигнорируют размещение микроразметки?

Я нашел в сети интересное высказывание ведущего специалиста отдела качества поиска Google Джона Мюллера (John Mueller)

Процитирую отдельные отрывки:

Я думаю, что со временем микроразметка может также использоваться в ранжировании.

Как Вам? Вот еще:

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

Вот собственно само интервью, правда на английском.

Запись интервью Джона Мюллера

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

Переходим к технической части нововведений Schema.org. Поехали!

Обновленная библиотека "schema.org/Article" для Google

Библиотека элементов schema.org/Article применяться для разметки статей, идеально подходит, как для моего блога, так и для многих других, поэтому я и взял ее на вооружение.

Итак, если проверить страницы блога на валидаторе микроразметки от Гугл, то наверное у многих вылезут глаза.

В блоке «Article», для проверяемой страницы, я обнаружил аж 203 ошибки:

microrazmetka-2-2

Теперь давайте разберемся, что это за ошибки.

Во-первых, появится ошибки в разметке изображений:

microrazmetka-2

В моем случаи именно изображения стали виной такого количества ошибок. Почему? Объясню немного позже.

Во-вторых, валидатор укажет на недостающие поля:

microrazmetka-2-1

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

Вся суть нововведений заключается в том, что теперь для определенных элементов микроразметки надо указывать свои библиотеки. Данные библиотеки, для удобства, я буду назвать «мини библиотеки», хотя, конечно, никакие они не «мини».

Так вот, в свою очередь, все мини библиотеки должны быть размешены в теле главной библиотеки — schema.org/Article.

<div itemscope itemtype="http://schema.org/Article">
"Тут должны располагаться все мини библиотеки, относящиеся к schema.org/Article"
</div>

Открываем файл single.php или прикрепленный файл, отвечающий за вывод цикла WordPress и выше заголовка записи вставляем главную библиотеку.

<div itemscope itemtype="http://schema.org/Article">
<h2><?php the_title(); ?></h2>	

Такое размещение конечно не аксиома. Место, куда лучше вставить библиотеку и ответный тег </div>, зависит от структуры шаблона.

Теперь начинается самое интересное, так как далее речь пойдет непосредственно о нововведениях.

Поле "mainEntityOfPage" и библиотека "schema.org/WebPage"

Поле "mainEntityOfPage" относится к библиотеке schema.org/WebPage и переводится, как «Основная страница».

Данная разметка носит рекомендательный характер (см. скриншот выше), но раз Гугл хочет видеть это поле в коде, давайте его пропишем.

<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="URL_страницы"/>

Здесь нам надо заполнить значение всего одного элемента:

itemid="URL_страницы" 

Я так понял, сюда вписывается что-то, типа канонического урла, т.е, постоянный адрес страницы.

Чтобы автоматически прописывать постоянный адрес для каждой записи, воспользуемся функцией the_permalink(). Также для валидности придется указать атрибут content. Я наполнил его заголовком статьи, выводимым функцией the_title() .

В следующую строчку, сразу после schema.org/Article, вставляем такой код:

<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="<?php the_permalink() ?>" content="<?php the_title(); ?>"/>

Проверяем результат на Гугл валидаторе:

microrazmetka-2-3

На заметку! На скриншоте домен моего тестового сайта на Денвере, так что не пытайтесь найти его в сети, вы просто попадете совершенно на другой ресурс!

Все в порядке! Вроде с полем mainEntityOfPage разобрались. Идем дальше.

Поле "publisher" и библиотека "schema.org/Organization"

Поле "publisher" переводится, как «Издатель» и относится к библиотеке "schema.org/Organization" Данное поле должно включать в себя еще несколько полей и выглядеть следующим образом:

<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
    <div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
        <img itemprop="url image" src="путь_до_логотипа" style="display:none;"/>
        <meta itemprop="width" content="ширина_изображения">
        <meta itemprop="height" content="высота_изображения">
    </div>
    <meta itemprop="name" content="название_сайта">
    <meta itemprop="telephone" content="+7 xxx xxx xx xx">
    <meta itemprop="address" content="Город">	
</div>

Из примера видно, что поле "publisher" включает в себя еще одно поле "logo", которое относится к библиотеке "schema.org/ImageObject". К данной библиотеке мы еще вернемся, а пока давайте разберемся с полями.

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

Будет ли логотип отображаться в сниппете, я пока не знаю, время покажет, но размечать все равно придется, так как данная разметка обязательна!

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

В поле "name" прописываем название сайта. Вроде все. Не забываем поставить закрывающий тег </div>.

В поля "telephone" и "address" я добавил уже после выхода статьи (читайте обсуждение в комментариях). В их заполнении ничего сложного нет.

Весь блок вставляем сразу после поля "mainEntityOfPage" и идем проверять на валидаторе:

microrazmetka-2-4

Гугл доволен и мы тоже. Осталось еще одно поле, на которое мне указал валидатор.

Поле "dateModified"

Данное поле напрямую относится к библиотеке "schema.org/Article" и поэтому дополнительные мини библиотеки прописывать не надо.

Слово "dateModified" можно перевести, как «Дата изменения» и поэтому в значении надо указать соответствующую дату.

В WordPress за дату последнего изменения записи отвечает функция the_modified_time() и тут все просто.

<meta itemprop="dateModified" content="<?php the_modified_time('Y-m-d')?>"/>

Что скажет валидатор:

microrazmetka-2-5

Видите, даты разные, и поле "dateModified" указывает именно на день последнего изменения.

Как размечать заголовок, дату публикации, автора статьи, а также description (краткое описание статьи) я показывать не буду, так как это элементы из старой версии разметки и я их уже описывал в статье Микроразметка Schema.org на примере кулинарного сайта.

Для наглядного примера покажу, как у меня выглядит весь блок микроразметки в файле single.php:

<div itemscope itemtype="http://schema.org/Article">
<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="<?php the_permalink() ?>" content="<?php the_title(); ?>"/>	
<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
<div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
<img itemprop="url image" src="http://mayak.ru/wp-content/themes/wp-themes-blogger/images/logotip.png" style="display:none;"/>
<meta itemprop="width" content="100">
<meta itemprop="height" content="100">
</div>
<meta itemprop="name" content="SEO Mаяк">
<meta itemprop="telephone" content="+7 xxx xxx xx xx">
<meta itemprop="address" content="Город">	
</div>
<meta itemprop="dateModified" content="<?php the_modified_time('Y-m-d')?>"/>	
<h2 itemprop="headline"><?php the_title(); ?></h2>	            			
<span itemprop="datePublished"><?php the_time('Y-m-d') ?></span><span itemprop="author"> автор: <?php the_author() ?></span>  <?php edit_post_link(__('Edit This')); ?>
<?php the_content(__('(Читать полностью)')); ?>		
</div> 

Это еще не все! У нас еще остались ошибки в разметки изображений.

Поле "image" и библиотека "schema.org/ImageObject"

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

Ну да ладно не будем о грустном, с помощью php мы сделаем это в два счета.

В прежней структуре разметки достаточно было в тело тега "img" добавить атрибут itemprop="image":

<img itemprop="image" src="адрес_изображения" alt="*****" width="ширина" height="высота"/>

Теперь же структура гораздо сложнее, вот пример:

<div itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url" src="адрес_изображения" alt="****" width="ширина" height="высота"/>  
<meta itemprop="width" content="ширина">
<meta itemprop="height" content="высота">
</div>

Создается отдельное поле "image" в котором указывается библиотека "schema.org/ImageObject". Кроме того, в рамках поля "image", необходимо прописать дополнительные мета-поля "width" и "height" и указать в них размеры изображения.

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

Я сейчас не буду называть имена этих людей, но они конечно известны. Мне постоянно приходят письма, где порядочные читатели сообщают о том, что видели мои функции на тех или иных ресурсах.

Ребята, вы знаете вообще, что такое авторское право? Если у вас не хватает мозгов или желания изучать php, это Ваши проблемы, но не надо мой труд выдавать за свой!

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

Итак, чтобы исправит ошибку в разметке изображений, прежде надо из файла functions.php удалить мою старую функцию. Напомню, как она выглядит:

function mayak_image_marking($content) {
global $post;
$pattern = "<img";
$replacement = '<img itemprop="image"';
$content = str_replace($pattern, $replacement, $content);
return $content;
}
add_filter('the_content', 'mayak_image_marking');

Вместо нее вставляем другую:

function mayak_filter_image($content) {
$ar_mk	= '!<img (.*?) width="(.*?)" height="(.*?)" (.*?)/>!si';
$br_mk = '<span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" \\1 width="\\2" height="\\3" \\4/><meta itemprop="width" content="\\2"><meta itemprop="height" content="\\3"></span>';
$content = preg_replace($ar_mk, $br_mk, $content);	
	return $content;		 
}
add_filter('the_content', 'mayak_filter_image');

Данная функция разметит все изображение в теле статьи, но если вы хотите разметить только первое изображение, то надо будет изменить строчку №4:

$content = preg_replace($ar_mk, $br_mk, $content, 1);

Идем смотреть результат:

microrazmetka-2-6

Все отлично! Больше ошибок нет.

Гугл и Яндекс опять не договорились по поводу микроразметки

Подходы Яндекса и Гугла к вышеописанным нововведениям немного различаются, по крайней мере пока. Лично я думаю, что Яша просто запаздывает с внедрением новых алгоритмов.

Если вспомнить историю появление микроданных, когда 2 июня 2011 года Google, Yahoo! и Microsoft объявили о внедрении Schema.org и опубликовали соответствующую библиотеку, то Яндекс присоединился к ним только 1 ноября, т.е, на пол года позже.

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

Успехов всем! До встречи!

С уважением, Виталий Кириллов

Комментарии: 267

  1. Роза:

    Здравствуйте Виталий. Ждала от вас такую статью. Спасибо, что быстро отреагировали на изменения. Попробую доделать микроразметку. А еще подскажите, Яндекс просто «не видит» изменения для гугла или ошибки выдает, если разметить по новому. Это все таки разные вещи.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Роза! Валидатор Яндекса выдает ошибки.

      Ответить
  2. Роза:

    Уже посмотрела по картинкам. (они меня больше всего интересуют) Яндекс выдает предупреждение: «Не выполнено обязательное условие для передачи данных в Яндекс.Картинки: поле contentUrl или image или thumbnail отсутствует или пусто», хотя url картинки вроде как указан.
    А еще большая проблема для меня, как разметить картинки, которые выводятся плагином галереи.

    Ответить
    • Виталий Кириллов:

      Про плагин ничего не могу сказать, никогда не пользовался.

      Ответить
  3. Егор:

    Спасибо большое. У меня просто время не было на написание функции разметки картинок, занят проектом своим новым. А вот то, что твою функцию видел на различных сайтах, в рекомендациях по разметке, это да. Даже иногда улыбку вызывает изменение имени функции 🙂 А вот я честно ставлю своим клиентам оригинальные названия функции 🙂 кстати это относится ко всему. Если что то большое, то отмечаю в файле readme.

    Сейчас пошучу. Спасибо Google, (тут правильно что в помощь веб мастерам!)я пошел разметку править клиентам, а так как это не моя недароботка, за обновление микроразметки надо денежки выкладывать. К Новому Году как раз кстати калымчик!

    Ответить
  4. Евгений:

    Виталий привет! Когда ты прописываешь мета для Полей «mainEntityOfPage» и библиотек «schema.org/WebPage» — ты это делаешь в header.php?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Евгений! Мета поля не обязательно должны быть в хедере, их можно размещать и в других местах, тем более поле mainEntityOfPage должно находится в области действия библиотеки schema.org/Article.

      Ответить
  5. Елена:

    Как повлияет на Яндекс? Если установить новую микроразметку, на Яндексе будет что то отображаться, или микроразметка там пропадет?

    Ответить
    • Виталий Кириллов:

      Отображаться будет конечно, но с ошибками.

      Ответить
      • Bahus:

        Есть такой блог Кости Хмелева. У него на микроразметку ни гугл, ни яндекс не ругается. У обоих без ошибок.

        Ответить
        • Виталий Кириллов:

          В ходе совместных усилий мы также выработали вариант, устраивающий и Гугл и Яндекс. Почитайте комменты.

          Ответить
  6. Евгений:

    Виталий, еще вопросы: Внедрил у себя в single.php и functions.php , вышенаписанное, но теперь начал ругаться Яндекс:

    ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов Яндекс.Справочника: поле address отсутствует или пусто

    ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов Яндекс.Справочника: для данной категории организаций необходимо указать telephone
    itemType = https://schema.org/Organization
    logo
    imageobject

    ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для передачи данных в Яндекс.Картинки: поле contentUrl или image или thumbnail отсутствует или пусто

    Зато у гугла все четко, как я Яшей быть?

    Ответить
    • Виталий Кириллов:

      Я вроде в статье заострял внимание на данном аспекте. Яндекс на данный момент не поддерживает изменения! Тут каждый веб-мастер должен сам решать под какой поисковик подстраиваться.

      Ответить
      • Евгений:

        Еще один вопрос, Виталий, счас проверил эту, твою статью, в валидаторе гугла и яндекса. Яндекс страницу не видит, но и гугл выдает ошибки, о которых написано в статье. Что-то дорабатывашь, Виталий?

        Ответить
        • Виталий Кириллов:

          Яндекс валидатор бывает глючит, я на блоге оставил старую версию разметки.

          Ответить
    • Роза:

      По поводу адреса и телефона для яндекса я решила проблему методом Виталия же: сразу после «<meta itemprop="name" content="название_сайта">» добавила аналогично
      <meta itemprop="telephone" content="+7 495 789–00–00">
      <meta itemprop="address" content="Москва">
      Адрес и телефон естественно вымышленные. Эти 2 ошибки в яндексе исчезли. Гугл тоже принял. Не знаю только как на сниппетах отразится. Мне там телефон и адрес совсем не нужны. Хотя в Гоше их и не видно, сниппет обновился (по хлебным крошкам вижу), а Яша очень уж долго все индексирует.

      А вот по поводу «в Яндекс.Картинки: поле contentUrl или image или thumbnail отсутствует или пусто» проблема осталась. У меня теперь это единственная ошибка в Яндексе.
      Тут уж к Виталию за помощью обращаюсь. Мне кажется тут вашу функцию по картинкам еще чуть-чуть доработать надо. Я попробовала сама изменить в ней в <img itemprop="url" url на contentUrl, Яша проглотил, но теперь гугл ругаться начал, что урл отсутствует и «для image указан недопустимый URL.»

      Ответить
      • Виталий Кириллов:

        Роза, вы не меняйте, а просто добавьте к itemprop="url" через пробел itemprop="image" и все будут довольны.
        Вот так:

        function mayak_filter_image($content) {
        $ar	= '!<img (.*?) width="(.*?)" height="(.*?)" (.*?)/>!si';
        $br = '<span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url" itemprop="image" \\1 width="\\2" height="\\3" \\4/><meta itemprop="width" content="\\2"><meta itemprop="height" content="\\3"></span>';
        $content = preg_replace($ar, $br, $content);	
        	return $content;		 
        }
        add_filter('the_content', 'mayak_filter_image');
        

        Функцию в статье я пока менять не буду, надо провести еще дополнительные тесты.

        Ответить
        • Роза:

          Да, я поправила, все получилось и для Яндекса и для Гугла. Спасибо за помощь.
          А сейчас обнаружила еще проблему. Так как logo, mainEntityOfPage и dateModified мы разметили только в статьях, на главной в аносах и в рубриках гугл выдает ошибку об их отсутствии. Добавить без проблем в соответствующие файлы темы получилось только dateModified этим же кодом. По остальным вылазят новые ошибки, потому что статьи размечены как schema.org/Article, а анонсы на главной как schema.org/BlogPosting и эти типы для них недопустимы.
          В общем копаюсь дальше. Чую на все каникулы новогодние гугл нам работы задал 🙂
          Трафик хоть и маленький пока (статей еще очень мало) но с обоих поисковиков идет, вот и хочется двух зайцев сразу поймать.

          Ответить
          • Евгений:

            Роза, у меня на главной ошибок нет. Я по аналогии с single.php разметил главную index.php и все получилось. С картинками согласен, ошибки остались, но остальное все ушло. Единственный минус — это html checker начал ругаться и выдал больше ошибок.

            Ответить
          • Lucky:

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

            А вот адрес и телефон прописывать не стал, чтобы в сниппете не вылез.

            Как у Вас кстати дел со сниппетом? не появились адрес и телефон?

            Ответить
            • Виталий Кириллов:

              Нет, телефоны в сниппетах пока не появились. Прошло 2 месяца, после внедрения новой микроразметки.

              Ответить
              • Lucky:

                Спасибо за ответ Виталий.
                Поставлю и себе на досуге.

                Вы не могли бы как профессионал, подсказать в чем может быть проблема моего кода на сайте?

                Все подправил что можно в validator.w3.org/nu/, а с 1 ошибкой не могу справиться, ругается он, на не закрытый тег <a>, но как я его закрываю, вместо 6 ошибок, валидатор выдает от 125 до 255 ошибок, в зависимости от того, куда поставить

                Проблема в header.php, в строчке:

                <a href="/" title=""><img alt="" title="" src="" />

                Как я полагаю, закрыть его можно всего в 2-х местах, в конце и после (bloginfo(‘name’)); ?>»> и то и то приводит к многократному увеличению ошибок =(

                оригиналы файла найти не смог, только архивные, там все так же, но еще в начале стоял и тоже без закрывающего тэга =))

                Буду очень Вам благодарен за любой совет.

                Ответить
                • Lucky:

                  Ай ай ай, сработали тэги, сорри….

                  Ответить
        • артем:

          Виталий, добрый день! У меня такая же ошибка выпадает, как у Розы. Но добавление itemprop=»image» в код проблему не решило, валидатор яндекса так и ругается на «поле contentUrl или image или thumbnail отсутствует или пусто» да еще Html Checker добавил ошибку валидации кода. может есть все-таки «таблетка»?

          Ответить
          • Виталий Кириллов:

            Здравствуйте Артем! Атрибут itemprop=»image» уже добавлен в код и второй раз его добавлять не надо.

            Ответить
            • артем:

              Виталий, второй раз атрибут itemprop=»image» я не добавлял, то есть взял код как есть из комента выше от 25.12.2015. и в этом случае, действительно, предупреждение яндекса «Не выполнено обязательное условие для передачи данных в Яндекс.Картинки: поле contentUrl или image или thumbnail отсутствует или пусто» исчезает, но при этом, в валидаторе w3c появляется ошибка «Duplicate attribute itemprop.». об этом я писал в предыдущем комментарии. кроме того, в любом случае висит предупреждение «Не выполнено обязательное условие для передачи данных в Яндекс.Картинки: поле contentUrl или image или thumbnail отсутствует или пусто» и для logo. возможно ли исправить всё-таки эти ошибки?

              Ответить
              • Виталий Кириллов:

                Все правильно, потому, что не должно быть два атрибута itemprop подряд. Это было сделано, чтобы угодить Яндексу, при этом w3c оказался обиженным. К сожалению приходится выбирать. Та же ситуация с полем logo. Просто добавьте itemprop=»image» в тело тега img.

                Ответить
                • артем:

                  ну, понятно…и, поскольку, это всего лишь предупреждение, пусть остается предупреждением…ошибку w3c долой 🙂

                  Ответить
        • Сергей:

          Виталий, огромное спасибо за функцию разметки картинок. Гугл с Яндексом довольны, но валидатор validator.w3.org ругается на Duplicate attribute itemprop. Как поступить? Оставить довольными оба поисковика и не обращать внимания на валидатор W3 или убрать повторяющийся атрибут и сделать недовольным какой-либо поисковик. А может у вас есть лучшее решение?

          Ответить
          • Виталий Кириллов:

            Сергей, с момента публикации функция несколько раз дорабатывалась, поэтому вставьте ее заново и затем проверьте на validator.w3.

            Ответить
  7. Максим:

    Здравствуйте. А для миниатюр (thumbnail), код разметки дадите?

    Ответить
    • Виталий Кириллов:
      function mayak_filter_thumbnail($content) {
      $ar	= '!<img width="(.*?)" height="(.*?)" (.*?)/>!si';
      $br = '<span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url" width="\\1" height="\\2" \\3/><meta itemprop="width" content="\\1"><meta itemprop="height" content="\\2"></span>';
      $content = preg_replace($ar, $br, $content);	
      	return $content;		 
      }
      add_filter('post_thumbnail_html', 'mayak_filter_thumbnail');
      
      Ответить
      • Максим:

        Огромное вам спасибо! Добавил сайт в закладки, очень интересный ресурс!

        Ответить
      • Сергей:

        подскажите, как сделать, чтобы миниатюры размечались только внутри статьи (в цикле) а не по всему сайту

        Ответить
        • Виталий Кириллов:

          Так фильтр the_content и распространяет свое действие только на тело статьи.

          Ответить
          • Сергей:

            немного запутался, я о том, можно ли в основном цикле размечать, а в дополнительных циклах, которые выводятся при помощи wp_query и так далее, не размечать

            Ответить
            • Виталий Кириллов:

              Я не знаю такого хука, который бы действовал в рамках определенного способа инициализации цикла.

              Ответить
      • Bahus:

        Недавно сменил шаблон на блоге. Всю микроразметку сделал, кроме миниатюр. Ни в какую не хотят функцией размечаться.
        В шаблоне миниатюра создается из основной картинки. Код вывода на главной
        <a rel="bookmark" data-link="<?php the_permalink() ?>">
        <?php $params = array( 'width' => 260, 'height' => 260,'crop' => true);
        $base = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'full');
        $title = get_the_title($post->ID);
        echo "<img itemprop='image' alt='$title' class='blog-thumb' src='" . bfi_thumb( $base[0], $params ) . "'/>"; ?>
        </a>
        Можете помочь?

        Ответить
        • Виталий Кириллов:

          Вот этот кусок кода отвечает за вывод картинки:

          <img itemprop='image' alt='$title' class='blog-thumb' src='" . bfi_thumb( $base[0], $params ) . "'/>

          У вас он даже размечен, правильно было бы так:

          itemprop='url image' 
          Ответить
          • Bahus:

            Пробовал размечать. Попробовал ис url. Функция в functions не подхватывает миниатюры и не добавляет к ним
            <div itemprop="image" itemscope itemtype="https://schema.org/ImageObject">
            и
            <meta itemprop="width" content="ширина">
            <meta itemprop="height" content="высота">

            Ответить
            • Bahus:

              Добавил в ручную. Гугля заткнулась. Яша картинки тоже вроде вилит, но ругается на
              ===
              ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов творческих работ: поле description или articleBody отсутствует или пусто
              ===

              Ответить
              • Bahus:

                Разобрался. Забыл разметить текст анонса.

                Ответить
  8. Виталий Кириллов:

    Елена Картавцева, вчера, в ходе экспериментов, слетела база данных, пришлось восстанавливать из копии. К сожалению Ваш комментарий не сохранился.

    Ответить
  9. Ксенья Юрьевна:

    Зравствуйте Виталий, какой вы умный! Ваша статья вызвала у меня целую бурю чувств. Микроразметку я заказывала блогеру, за 1,5 тыс, из своей пенсии. Вначале ошибок не было, потом в мастере появились замечания, исправляла их сама.Переустановила тему, где оказалась готовая микроразметка, тоже с ошибками,которые мне удалось исправить. Код на картинки у меня вставлен, может быть и ваш, но мне его установил блогер, сейчас в нем ошибки.
    Хотела спросить, у меня микроразметка не артикеле, а блогпостинг, есть здесь существенные отличия? Или можно этим пренебречь?
    И еще, я у вас коды копировала, но на вас ссылаюсь, как и на другие сайты, можете посмотреть.
    Несколько недель микроразметка у меня была правильной, однако это не изменило индексацию сайта, на которую и раньше не жаловалась.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Ксения Юрьевна! Смысл разметки — расширенный сниппет, а при ошибках сниппет не будет дополнен.

      Ответить
  10. Алексей:

    Здравствуйте Виталий! Подскажите пожалуйста
    Для страницы категорий вывод первой картинки из статьи делаю
    <span itemprop="image" itemscope itemtype="http://schema.org/ImageObject" >
    <a itemprop="contentUrl" href="<?php the_permalink()?>"><img itemprop="url" src="<?php echo catch_that_image()?>" alt="<?php the_title();?>" width="600" height="300"/></a>
    <meta itemprop="width" content="600">
    <meta itemprop="height" content="300">
    </span>
    код получается валидный и под яшу и под гугл В данном случае картинки в постах на страницы категорий все имеют размер 600 на 300
    Есть еще один сайт и там картинки в постах все разного размера Подскажите пожалуйста как сделать так чтобы размер автоматически определялся?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Алексей! Один вопрос, миниатюры для первых картинок в постах созданы?

      Ответить
      • Алексей:

        у меня выводятся полного размера картинки ширина у всех 600 этот параметр микроразметки можно в коде указать А высота у всех разная как его задать незнаю

        Ответить
        • Виталий Кириллов:

          Алексей, дело в том, что в WordPress нет готовых функций вывода ширины и высоты изображений. Проблему можно решить следующим образом.
          В файл functions.php вставляем две мои авторские функции:

          function mayak_img_width(){
            global $post, $posts;
            preg_match_all('/<img.+width=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $width);
            return $width [1][0];   
          }
          function mayak_img_height(){
            global $post, $posts;
            preg_match_all('/<img.+height=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $height);
            return $height [1][0];   
          }
          

          В нужном месте шаблона выводим ширину и высоту первой картинки поста:

          <?php echo mayak_img_width()?>
          <?php echo mayak_img_height()?>
          

          Дынный вариант вывода размеров изображений работает только в цикле WordPress.

          Ответить
          • Алексей:

            спасибо огромное!

            Ответить
          • Максим:

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

            Ответить
            • Виталий Кириллов:

              Скинте ссылочку, я посмотрю.

              Ответить
          • Наталья:

            Здравствуйте! А где это нужное место в шаблоне должно быть. Подскажите, пожалуйста.
            И еще в разметке рецептов гугл рекомендует заполнить «aggregateRating» и «description» — вы делали?

            Ответить
  11. Альберт:

    Виталий, здравствуйте! Или у меня ночные глюки, или Гугл передумал вводить новую разметку. Сейчас у меня показывает все нормально, а еще днем выдавал кучу ошибок и пожеланий. Больше никто не обратил на это внимание?

    Ответить
  12. Альберт:

    Вот теперь опять показывает ошибки. )) Может настраивают чего-то.

    Ответить
  13. Евгений:

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

    Ответить
  14. Сауле:

    Виталий, здравствуйте. Спасибо за полезную статью У меня вопрос, не касающийся напрямую данной темы. В рассылке, которую я получаю от вас в почте mail.ru, перестали отображаться картинки (миниатюры). То есть вместо изображений — пустое белое окно. В первый раз 17 декабря (статья … произвольные типы записей WordPress) и к этой статье. У меня в блоге такая же ситуация. В другой почте (к примеру, в яндекс-почте) изображения показываются нормально (проверяла в своих анонсах). В анонсах других сайтов, на которые я подписана, в почте mail.ru миниатюры-изображения на месте. Вы не знаете, связано ли это как-то с последним обновлением WordPress? Или, может, подскажете, где можно искать причину? Если нужно, могу прислать скрины.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Сауле! Скорее всего это проблемы mail.ru

      Ответить
  15. Максим:

    Привет Виталий! Классная статья, очень пригодилась! Только вот валидатор гугла после вставки твоего кода стал выдавать ошибку на каждое изображение

    Свойство width недопустимо для объекта типа Article.
    Свойство height недопустимо для объекта типа Article.

    вот пример кода картинки

    Если знаешь, подскажи в чем дело!

    Ответить
    • Виталий Кириллов:

      Здравствуйте Максим! Скорее всего это глюк валидатора.

      Ответить
      • Владимир:

        нет, это не глюк. проблема возникает когда картинка вставлена с текстом в поле «подпись», т.е. движок обёртывает его в div. Как-то можно это учесть в функции?

        Ответить
        • Виталий Кириллов:

          Вот составил функцию, протестируйте:

          function mayak_filter_image_two ($a , $attr, $content = null){
          extract(shortcode_atts(array('id' => '', 'align' => 'alignnone', 'width' => '', 'caption' => ''), $attr));
               if ( 1 > (int) $width || empty($caption) )
                  return $content;
               $caption = html_entity_decode( $caption );  
               if ( $id ) $id = 'id="' . esc_attr($id) . '" ';
          return '<div itemprop="image" itemscope itemtype="https://schema.org/ImageObject" ' . $id . 'class="wp-caption ' . esc_attr($align) . '" style="width: ' . (10 + (int) $width) . 'px">' . do_shortcode( $content ) . '<p class="wp-caption-text">' . $caption . '</p></div>';
          }
          add_filter('img_caption_shortcode', 'mayak_filter_image_two', 10, 3);
          

          Работает в паре с основной функцией разметки изображений.

          Ответить
          • Владимир:

            да, работает! Спасибо огромнейшее! =)

            Ответить
          • Алексей:

            Здравствуйте! Подскажите пожалуйста что нужно поправить в вашей функции чтобы сделать валидный код сейчас в коде страницы <p class="wp-caption-text"><meta itemprop="width" content="600"><meta itemprop="height" content="300"></span>описание картинки</p>
            Валидный код будет <meta itemprop="width" content="600"><meta itemprop="height" content="300"></span><p class="wp-caption-text">описание картинки</p>

            Ответить
            • Виталий Кириллов:

              Вот протестируйте на валидаторе это решение.

              Ответить
  16. Сергей:

    Виталий, с наступившим!
    Вот ещё забавная штука: Гугл для Product (в отличие от Article) к картинкам почему-то претензий не имеет. Вот и пойми их…

    Ответить
    • Виталий Кириллов:

      И Вас с наступившим Сергей!
      Да и для библиотеки Recipe ничего подобного Гугл не требует. То ли еще будет!

      Ответить
      • Сергей:

        С Рождеством!
        Виталий, как «перфекционист перфекционисту»: конструкция для mainEntityOfPage (по тексту статьи ) вызывает «недовольство» валидатора validator.w3.org
        Добавление content=»» снимает проблему (по аналогии для картинок с alt-ом).
        Успехов.

        Ответить
        • Виталий Кириллов:

          И Вас с Рождеством Сергей! Конечно Вы правы, но вот в чем вопрос: зачем Гугл приводит в качестве примера не валидный код! Спасибо за комментарий, хорошее дополнение к статье.

          Ответить
  17. Roman:

    Как по мне, так разобраться в микроразметке стоит каждому оптимизатору.

    Ответить
  18. Bahus:

    Поправил разметку для гугоа. На днях поправлю для аши адрес там и всякую муть. Проблема только с картинками. Функция не работает почему то. В коде ничего не меняется.

    Ответить
    • Виталий Кириллов:

      Возможно изображения у Вас выводятся функцией шаблона.

      Ответить
      • Bahus:

        Тогда достаточно будет в конце функции в фильтре просто поменять имя стандартной функции на название из шаблона?

        Ответить
        • Виталий Кириллов:

          Я посмотрел исходный код Вашего сайта. Дело не в функции вывода изображений, а в функции вывода всего контента. Скорее всего у Вас не срабатывает хук the_content, иначе все бы работало.

          Ответить
          • Bahus:

            А, the_content это стандартная функция вывода всего контента. Будем дальше посмотреть.

            Ответить
            • Bahus:

              Переместил код в середину functions.php и гугля теперь ругается только на размеры картинок.

              Ответить
              • Bahus:

                Причем в коде страницы оба meta (ширина и высота картинки) присутствуют, но Гугл их не видит.

                Ответить
                • Виталий Кириллов:

                  У вас поле <span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"> не отображается в коде, вот Гугл и не видит размеры.

                  Ответить
                  • Bahus:

                    Тогда все, приехали. Больше моих знаний на этот шаблон не хватает.

                    Ответить
                    • Виталий Кириллов:

                      Поэтому люди и обращаются за помощью, о чем я и писал в статье.

  19. Bahus:

    Нашел тему с уже встроенной микроразметкой. На ура проходит проверку и у гугли и у яшки. В настройках забивается телефон и адрес.

    Ответить
    • Алексей:

      А название темки подскажите? многим интересно было бы взглянуть?

      Ответить
      • Bahus:

        wp-puzzle.com/?wpam_id=34 Бесплатная Basis
        Есть бесплатная 2 платных.

        Ответить
        • Виталий Кириллов:

          Bahus решение Вашей проблемы с микроразметкой изображений здесь.

          Ответить
          • Bahus:

            Новая разметка конфликтует с плагином wordpress WP-PostRatings. Если он включен, не проходит проверка микроразметки. Появляется
            Article 2: endrblog.ru/sozdanie-bloga/seo/post-ratings-1977 с собственно ошибками
            author: отсутствует (обязательное)
            name: отсутствует (обязательное)
            publisher: отсутствует (обязательное)
            dateModified: отсутствует (рекомендуется)
            mainEntityOfPage: отсутствует (рекомендуется)
            При отключении плагина остаются ошибки только с картинками. Возможно это только на моей теме.

            Ответить
          • Bahus:

            С вашими функциями разметки картинок дублируются некоторые картинки в статье и пропадает кликабельность следующих за ними. Устал я от этого шаблона. Ничего на нем нормально не работает. Все через опу. Буду менять.

            Ответить
            • Bahus:

              Убрал подписи, все восстановилось. Но картинки размечаются не все.

              Ответить
              • Виталий Кириллов:

                В статьях должны все размечаться, что качается миниатюр в комментах есть код для них.

                Ответить
                • Bahus:

                  Заработало. Проверил другим браузером. Осталась только ошибка у яндекса в комментах
                  ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop

                  Ответить
                  • Виталий Кириллов:

                    Проверьте корректность размещения закрывающего тега библиотеки schema.org/Article, он не должен захватывать область комментариев.

                    Ответить
                    • Bahus:

                      Не захватывает.

                    • Bahus:

                      Нашел косяк.
                      Была неверная строчка itemprop=»comment» itemscope=»itemscope» itemtype=»http://schema.org/Comment» с лишнимми тегами.

                    • Bahus:

                      Заменил на itemscope itemtype=»http://schema.org/Comment» и все заработало. 🙂
                      Теперь буду с главной разбираться. С миниатюрами и
                      publisher: отсутствует (обязательное)
                      dateModified: отсутствует (рекомендуется)
                      mainEntityOfPage: отсутствует (рекомендуется)

                  • Bahus:

                    Странно. Яша уперся в картинку с логотипом.

                    Ответить
                    • Bahus:

                      Сам дурак. Лишние кавычки в адресе логотипа. Блин, достала меня эта новая микроразметка. С предыдущей версией все быстрее было.

  20. Александр:

    Добрый день Виталий! Проблема заключается в следующем. После установки Ваших функций для автоматической микроразметки картинок. Были выявлены следующие проблемы — перестал работать плагин Shutter Reloaded Plus. Так же яндекс стал выдавать вот такую ошибку на каждой отдельной странице. microdata
    ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop. или вот такая ошибка в некоторых записях при поиске imageobject
    ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для передачи данных в Яндекс.Картинки: поле contentUrl или image или thumbnail отсутствует или пусто. Еще какие-то неизвестные проблемы выдает и гугл developers.google.com/structured-data/testing-tool?url=http%253A%252F%252Fapple-pnz.com%252F%253Fs%253D%2525D0%2525BF%2525D1%252580%2525D0%2525B8%2525D1%252585%2525D0%2525BE%2525D0%2525B4%2526x%253D19%2526y%253D6. Если убрать функции микроразметки изображений эти проблемы исчезают. Можете помочь в этом плане?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Александр! Плагины выводят изображения, использую собственную структуру html и я не могу подстраивать функцию под каждый плагин, которых масса всяких разных. Неужели сложно настроить вывод изображений средствами WordPress…

      Ответить
      • Александр:

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

        Ответить
      • Александр:

        Как можно настроить вывод изображений средствами WordPress?

        Ответить
        • Виталий Кириллов:

          У меня на блоге много статей, посвященных изображениям и их миниатюрам. Почитайте.

          Ответить
          • Александр:

            Виталий ищу, но не могу найти что-то для себя. Можете дать конкретную ссылку. А лучше помогите разобраться с плагином) С ним было очень удобно.

            Ответить
            • Виталий Кириллов:

              Так у Вас вроде нет ошибок.

              Ответить
              • Александр:

                Ошибок, то не. Но у меня стоит плагин Shutter Reloaded Plus, который при нажатие на картинку в статье или просто на главной странице она увеличивалась. После установки функции микроразметки изображений этот плагин перестал работать. Как это исправить?

                Ответить
                • Виталий Кириллов:

                  Приведите в комментарии полный код изображения без микроразметки, т.е. как было без моих функций.

                  Ответить
                  • Александр:

                    [caption id="attachment_2550" align="aligncenter" width="240"] Apple IPad 4th 128Gb 3G white[/caption]

                    Ответить
                    • Виталий Кириллов:

                      Мне нужен код изображения из исходного кода страницы (CTRL + U), а не из редактора.

                    • Александр:

                      Виталий я сейчас убрал функцию микроразметки. Плагин работает как надо. Вы можете сами взять тот код который Вам нужен. Просто я точно не знаю какой именно кусок кода Вам скидывать.

                    • Виталий Кириллов:

                      Я скопировал код, теперь обратно все поставьте.

                    • Александр:

                      Виталий спасибо большое за функцию! Вроде все работает! Думаю она будет много кому полезна. Единственное приходится иногда изображение несколько раз перещелкивать

                    • Виталий Кириллов:

                      Перещелкивать приходиться из-за кеша. Почистите кеш!

                  • Александр:

                    Все вернул.

                    Ответить
                    • Виталий Кириллов:

                      Хорошо, попробуем что-нибудь сделать.

                    • Александр:

                      А почему в разметки картинки иногда дублируются?

                    • Виталий Кириллов:

                      Вы старую функцию удалите!

                    • Александр:

                      ну естественно. https://developers.google.com/structured-data/testing-tool?url=http%253A%252F%252Fapple-pnz.com%252Facces%252Facustik%252Fakusticheskaya-sistema-bose-sound-mini-system-link-2.html вот здесь видно.

                    • Виталий Кириллов:

                      Да уж, функция нуждается в доработке! Функция дублирует размеры первого изображения, в вашем случаи изображения дублируются полностью, просто между ними нет текста. В общем отправляю функцию на доработку.

                  • Александр:

                    Спасибо!Буду ждать.

                    Ответить
                    • Алексей:

                      протестировал код валидный но теперь размечаются только картинка с описанием все остальные в статье картинки не разечаются

                    • Виталий Кириллов:

                      Вот доработал функцию, даже компактней получилось, протестируйте.

                      function mayak_filter_image_shortcode($content) {
                      $ar_mk	= '!(.*?)<img (.*?) width="(.*?)" height="(.*?)" (.*?)/>!si';
                      $br_mk = '\\1<meta itemprop="width" content="\\3"><meta itemprop="height" content="\\4"><img itemprop="url" itemprop="image" \\2 width="\\3" height="\\4" \\5/>';
                      $content = preg_replace($ar_mk, $br_mk, $content);
                      return $content;	
                      }
                      function mayak_filter_image_too($a , $attr, $content = null){
                      extract(shortcode_atts(array('id' => '', 'align' => 'alignnone', 'width' => '', 'caption' => ''), $attr));
                           if ( 1 > (int) $width || empty($caption) )
                              return $content;
                           $caption = html_entity_decode( $caption );  
                           if ( $id ) $id = 'id="' . esc_attr($id) . '" ';
                           return '<div itemprop="image" itemscope itemtype="https://schema.org/ImageObject" ' . $id . 'class="wp-caption ' . esc_attr($align) . '" style="width: ' . (10 + (int) $width) . 'px">'
                          . mayak_filter_image_shortcode($content) .'<p class="wp-caption-text">' . $caption . '</p></div>';
                      }
                      add_filter('img_caption_shortcode', 'mayak_filter_image_too', 9, 3);
                      
                    • Александр:

                      Вроде все равно есть какие-то дубли. Но так картинки перещелкиваются нормально. Можете сами посмотреть.

                    • Виталий Кириллов:

                      Я вот одного не пойму, зачем Вам две одинаковые фотографии, еще и расположенные рядом друг с другом?

                    • Александр:

                      Да точно. Проблема в одинаковых картинках. Спасибо Виталий за функцию!

                    • Алексей:

                      У меня осталось без изменений размечаются только картинки с описанием первая картинка поста и другие картинки без описания остаются без микроразметки

                    • Виталий Кириллов:

                      Алексей, для картинок без подписи используйте функцию из статьи.

                    • Алексей:

                      вставляю ещё функцию из статьи
                      ошибка 500

                    • Алексей:

                      изменил немножко название функции чтобы были разные сработало только у картинок с описанием теперь по два размера высоты и ширины

                    • Виталий Кириллов:

                      Ну да косяк, надо дальше думать.

                    • Виталий Кириллов:

                      Алексей, приведите в комментарии php класс из Вашей темы, который находиться в начале файла functions.php или дайте доступ, хочу посмотреть.

                    • Алексей:

                      не знаю что за класс вы спрашиваете высылаю доступ Адрес

                    • Виталий Кириллов:

                      Спасибо Алексей! Просто хотелось еще раз взглянуть на php класс из Вашей темы, для общего развития 🙂
                      Пока не получается составить корректную функцию, для разметки изображений одновременно: с подписью и без подписи, с ссылкой и без ссылки. В общем, очень много нюансов. Если получится, сразу опубликую.

  21. Валерий:

    Добрый вечер. Сегодня весь день вникаю в разметку (именно вникаю, потому так долго, интересно стало). Так вот, в Помощи от Яндекса написано про свойства name и headline:
    «Название или заголовок работы. Если в документе указаны одновременно оба свойства, в сниппет попадает название из свойства name.»
    Возможно, я еще не до конца все понял, но вопрос: если name — это название сайта, а headline — статьи на этом сайте. То какого Яша подменяет название статьи названием сайта? ))

    Такая же ерунда для Description и ArticleBody.

    Ответить
    • Валерий:

      Перепроверил. С несостыковками разобрался. Плюс удалось избежать добавления лишних картинок (img для publisher).. Собственно, это вызывало главную проблему :).

      Ответить
  22. Алексей:

    $content = preg_replace($ar_mk, $br_mk, $content, 1);
    можно ли здесь как то изменить чтобы размечались все изображения кроме первого?

    Ответить
    • Виталий Кириллов:

      Нет, не получится.

      Ответить
  23. Bogutskiy:

    К сожалению у меня тоже есть ошибки и вообще не получается их убрать((

    Ответить
  24. Александр:

    Здравствуйте Виталий! Подскажите пожалуйста. Как мне сделать, чтобы плагин вывода изображений работал корректно вместе с Вашей функцией микроразметки изображений? Плагин называется Shutter Reloaded Plus.

    Ответить
  25. Bahus:

    Небольшое уточнение по поиску решений ошибок валидации. Если выдаются ошибки, проверьте 2 варианта. Столкнулся сам.
    1. Если установлен плагин Wp rating post, при включеной в нем опции разметки для гугла, и яшка и гугл выдают ошибки. Для проверки отключите опцию и проверьте снова. Для корректной работы опции при наличии микроразметки нужно будет удалить 3 строки из кода плагина.
    2. Если используете в текстах смайлики, гугл и яшка так же выдают на них ошибки.

    Ответить
    • Игорь:

      А какие именно 3 строчки нужно удалить?

      Ответить
  26. Владимир:

    Привет у меня wordpress обраезает код
    Вместо <img itemprop="image" itemprop="url"
    выводит только <img itemprop="image"
    не подскажете как исправить?

    Ответить
  27. Дмитрий:

    Помню, намучался я с микроразметкой. Потом плюнул и обратился к фрилансерам. Не смог осилисть)

    Ответить
  28. Александр:

    Подскажите пожалуйста Виталий! У меня на сайте комментарии к статье находятся отдельно (не в теле статьи) из-за чего возникают ошибки в микроразметки. Как перенести комментарии в тело статьи?

    Ответить
    • Виталий Кириллов:

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

      Ответить
      • Александр:

        А у меня получается что это все как-то отдельно существует от статьи поэтому элемент микроразметки «Количество комментариев» у меня выдает ошибку. Как это исправить?

        Ответить
        • Виталий Кириллов:

          Разметка количества комментариев делается в файле comments.php.

          Ответить
          • Александр:

            Да я знаю. У меня так и было сделано, но после обновления гуглом микроразметки. Почему то именно на кол-во комментариев стал ругаться гугл и яндекс. Как я понял это потому что комментарии у меня существует отдельно. Как мне все это объединить?

            Ответить
            • Виталий Кириллов:

              Никак!

              Ответить
              • Александр:

                Хороший ответ)

                Ответить
                • Александр:

                  Вы хоть поняли о чем я Вас спрашиваю?

                  Ответить
                  • Виталий Кириллов:

                    Я понял, что речь шла об объединении статьи и комментариев, так вот я не знаю, как это все дело объединить)

                    Ответить
  29. Сергей:

    а как разметить картинку в теге a, ссылка ведет на фул изображение?

    если применить код из статьи, то тег span становится частью тега a и исчезает закрывающий тег span, хотя валидатор не ругается

    Ответить
  30. Александр Крутицких:

    Виталий, МЕГАсасибо за информацию. Похоже периодически нужно её проверять. Я думал что в микроразметку лезть уже не нужно будет, мол сделал и забыл. Не тут то было (( Буду корректировать, конечно же. Спасибо!

    Ответить
  31. Денис:

    Здравствуйте! Спасибо за предложенную функцию микроразметки изображений, однако я в ней нашел один баг. Если в стетье используется хэш-тег описания изображения [caption], формируемый самим движком, то этот код мало того, что не добавляет теги, так еще и удаляет ссылку a. Прошу доработать 🙂

    Ответить
  32. Артем:

    Приветствую! А какой смысл размечать все картинки в статье? Тег img ПС прекрасно понимают, а для гугл требуется только одна картинка. Вот и получается, что смысла размечаь все картинки нет никакого, достаточно и одной

    Ответить
    • Игорь:

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

      Ответить
  33. Денис:

    Здравствуйте Виталий! Подскажите пожалуйста, а что делать с изображениями, которые размещены в комментариях? Google выдает ошибку — Свойство width недопустимо для объекта типа Comment. Буду благодарен за помощь!!!!

    Ответить
    • Виталий Кириллов:

      Здравствуйте Денис!
      Попробуйте к функции разметки изображений добавить 2 строчки:

      add_filter('pre_comment_content','mayak_filter_image');
      add_filter('comment_text','mayak_filter_image');
      
      Ответить
  34. Денис:

    Еще вопрос! Как вывести itemprop=»description» у статьи, если описание указано в настройках All in Seo pack статьи?

    Ответить
    • Виталий Кириллов:

      Денис, в качестве description для статьи можно взять первый абзац или более. Вот функция:

      function mayak_text_description($content){
      $ot = '<p(.*?)/p>';
      $do = 'p itemprop="description" \\1/p';
      $content = preg_replace($ot, $do, $content, 1);
      return $content;
      }
      add_filter('the_content', 'mayak_text_description');
      

      Где цифра 1 — взять 1 абзац.

      Ответить
      • Алексей:

        почему данная функция не срабатывает в версии вордпресса 4.5.2 ?

        Ответить
        • Виталий Кириллов:

          Должна работать, дело не в версии WordPress.

          Ответить
      • Сергей:

        Виталий, добрый день! Вставил эту функцию, description добавилось. Но,блин, яндекс все равно выдает
        creativework
        ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов творческих работ: поле description или articleBody отсутствует или пусто

        itemType = http://schema.org/CreativeWork
        В чем подвох?

        Ответить
        • Виталий Кириллов:

          Здравствуйте Сергей!
          Вам надо вставить эту функцию:
          function mayak_text_description($content){
          $ot = '<p(.*?)/p>';
          $do = 'p itemprop="description" \\1/p';
          $content = preg_replace($ot, $do, $content, 2);
          return $content;
          }
          add_filter('the_content', 'mayak_text_description');

          Ответить
          • Сергей:

            попробовал на двух сайтах с разными темами. в яндексе ошибка как была так и осталась. при том, что до вставки вашей функции поле articleBody и так было заполнено, а после вставки появилось еще и description. что яндексу нужно, не пойму.

            Ответить
  35. Сергей:

    советовал бы еще показать код миниатюр, чтобы заменить. т.к. вот столкнулся с задачей, и пришлось повозиться.
    add_filter( ‘post_thumbnail_html’, ‘add_schema_wrap_thumbnail’, 10, 8 );

    function add_schema_wrap_thumbnail($html) {
    	global $post;
    	$pattern = "<img";
    	$replacement = '<img itemprop="url image"';
    	$html = str_replace($pattern, $replacement, $html);
    	return ''.$html.'';
    }
    Ответить
    • Виталий Кириллов:

      В смысле, пришлось повозиться, чтобы itemprop="url image" прописать?

      Ответить
      • Сергей:

        add_filter( ‘post_thumbnail_html’, ‘add_schema_wrap_thumbnail’, 10, 8 );
        function add_schema_wrap_thumbnail($html) {
        $pattern = «<img";
        $replacement = '<img itemprop="url image"';
        $html = str_replace($pattern, $replacement, $html);
        return '’.$html.»;
        }
        не тот код показался странно

        Ответить
        • Виталий Кириллов:

          Сергей, на самом деле, код должен выглядеть так:

          function mayak_thumbnail_image( $html ){
          return str_replace('img', 'img itemprop="url image"', $html);
          }
          add_filter( 'post_thumbnail_html', 'mayak_thumbnail_image' ); 

          Но если миниатюры попадут в действие библиотеки article, то будет ошибка. Тут надо использовать другой код:

          function mayak_filter_thumbnail($content) {
          $ar = '!<img width="(.*?)" height="(.*?)" (.*?)/>!si';
          $br = '<span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" width="\\1" height="\\2" \\3/><meta itemprop="width" content="\\1"><meta itemprop="height" content="\\2"></span>';
          $content = preg_replace($ar, $br, $content);	
          	return $content;		 
          }
          add_filter('post_thumbnail_html', 'mayak_filter_thumbnail');

          Такие дела!

          Ответить
    • Сергей:

      весь код не ставляется, но суть в том, что на return идет новый вариант ».$html.» ни в коем случае не хотел вас как-то обидеть, просто разбирался и вот решил скинуть

      Ответить
      • Сергей:

        потрите комментарии код не вставляется, так что смысл дискуссий на выходе это должно быть
        <span itemprop="image" itemscope itemtype="https://schema.org/ImageObject">'.$html.'<meta itemprop="width" content="610"><meta itemprop="height" content="260"></span>

        Ответить
        • Виталий Кириллов:

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

          Ответить
  36. Виталий Кириллов:

    Сергей, ваши некоторые комментарии не прошли, так как Вы отвечали сами себе.

    Ответить
  37. Lucky:

    У меня почему то в статьях некоторых выдается ошибка:
    image: отсутствует (обязательное)
    При нажатии, выдает:
    Необходимо указать значение для поля image.
    И указывает на
    div class=»blogcontent» itemscope itemtype=»http: //schema. org/Article»

    Ответить
    • Виталий Кириллов:

      С момента выхода статьи я немного модифицировал код добавление микроразметки к изображением. Переустановить функцию.

      Ответить
      • Lucky:

        Спасибо, все заработало.
        Буду благодарен, если ответите на мою просьбу выше.

        PS. Вы мобильную версию для сайта сами верстали или какой то плагин ставили?

        Ответить
        • Виталий Кириллов:

          Да мобильную версию сам делал. Уточните просьбу пожалуйста.

          Ответить
          • Lucky:

            Добрый вечер.
            Параллельно к Вашей статье подправил разметку в validator.w3.org/nu/, а с 1 ошибкой не могу справиться, ругается он, на не закрытый тег <a>, но как я его закрываю, вместо 6 ошибок, валидатор выдает от 125 до 255 ошибок, в зависимости от того, куда поставить закрывающий тэг </a>

            Проблема в header.php

            Оригиналы файла найти не смог, только архивные, там все так же, но еще в начале стоял и тоже без закрывающего тэга =))

            Толи я давно что то накосячил, то ли разработчики не доделали.

            ЗЫ. Буду очень Вам благодарен за любой совет.
            —————————————————

            И по текущей статье, у меня почему то в некоторых статьях выдает ошибку:
            «Свойство width недопустимо для объекта типа Article.»
            «Свойство height недопустимо для объекта типа Article.»

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

            Ответить
            • Lucky:

              Не хотят тэги прописываться.
              Не закрытый тэг А, а в архиве раньше еще и h1 стоял, ну с ним все понятно, он там не нужен.

              Ответить
              • Виталий Кириллов:

                Здравствуйте! Дело в том, что у Вас в зону действия библиотеки Article попали комментарии (об этом я предупреждал в статье), а граватары тоже картинки с тегом img. На счет тега «а» ничего не могу сказать.

                Ответить
                • Lucky:

                  Спасибо, разобрался с Article, на очереди циклические ссылки =) и нагрузка на сервер.

                  Ответить
  38. Дмитрий:

    Здравствуйте! Делаю себе микроразметку, все получается хорошо, кроме комментариев! В гугле показывает все замечательно, а вот яндекс ругается, выдает ошибку:
    » microdata
    ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
    itemType =
    comment
    comment
    itemType =

    http://schema.org/Comment

    creator = Никанорыч
    text = Спасибо за интересную статейку, есть к чему присмотреться.
    datepublished = 2016-03-03
    comment
    comment
    itemType =

    http://schema.org/Comment

    creator = admin Дмитрий
    text = Всегда пожалуйста!
    datepublished = 2016-03-03″

    С автоматической микроразметкой не выходит, выдает ошибку 500, белый экран!
    Прописал в ручную, вроде бы комменты отображаются в валидаторе, но с ошибкой!
    Подскажите пожалуйст, что можно сделать?
    Пробовал отключать все плагины, перемещал itemprop=»comment» itemscope=»itemscope» itemtype=»http://schema.org/UserComments» в разные блоки, также пробовал разделять его, все равно ошибка выскакивает!

    Ответить
    • Виталий Кириллов:

      Здравствуйте Дмитрий! Возможно валидатор Id со словом comment принимает за элемент микроразметки, попробуйте подключить библиотеку после вывода граватара.

      Ответить
  39. Дмитрий:

    Здравствуйте, Виталий! Почему-то при нажатии кнопки ответить (на комментарий) появляется форма для написания комментария, но не активная, т.е. я не смог написать ответом на ваш ответ :).  При наведении на область появляется курсор «рука»…. (возможно это только у меня, addblock отключен)

    Теперь к делу! Библиотеку подключал к разным блокам, относящимся к комментариям, результат тот же, яндекс выдает ошибку: «microdata ОШИБКА …»

    НО! Я нашел выход… хотя, нет, мне подсказали как его найти… (Константин Хмелев).

    Ошибка заключалась в том что блок комментариев должен быть размещен внутри блока article, т.е. в теле статьи, а он у меня был размещен после article.

    Переместив комментарии внутрь блока article и переместив закрывающий тег </div>, яндекс перестал ругаться! В гугле проверил — все ок!

    В вашей статье указано правило, цитирую:

    «Важное правило! Библиотеку schema.org/Article необходимо разместить так, чтобы она охватывала только зону записи и не в коем случаи не распространяла свое действие на зону комментариев или другие зоны, иначе будут ошибки.»

    Получается оно не работает?… У меня сейчас как раз наоборот получается, библиотека schema.org/Article охватывает зону записи, форму подписки, значки соцсетей и комментарии…

    P.S. Спасибо за классную статью, с помощью нее я исправил на своем блоге микроразметку, только вот с комментариями немного помучался… Блог тоже мне ваш нравится, читаю и не могу оторваться, столько интересного… Подписываюсь!

     

     

    Ответить
    • Виталий Кириллов:

      Здравствуйте Дмитрий! На моем блоге зона комментариев как раз не входит в поле действия библиотеки /Article и ошибок нет. Помню, в ходе экспериментов, я пробовал ставить закрывающий тег div после вывода комментарием и валидатор выдал ошибки, поэтому я и сделал в статье предупреждение.
      Теперь думаю надо его убрать, дабы не сбивать людей с толку. Спасибо за комментарий! Интересный опыт.

      Ответить
  40. Надежда:

    Приветствую. У меня все хорошо в статьях
    А вот на главной
    image: отсутствует (обязательное)
    и строчка —

    Что делать, а? Подскажите пжста

    Ответить
  41. Надежда:

    itemscope itemtype="http://schema.org/Article"

    Ответить
    • Виталий Кириллов:

      Разметить миниатюры.

      Ответить
      • Надежда:

        А как это сделать?

        Ответить
        • Надежда:

          А, все, спасибо, сделала

          Ответить
  42. Саня:

    Разметить так, чтобы и Яндексу, и Гуглу понравилось достаточно трудно. Мне с изображениями пришлось повозиться. Статья ваша как раз кстати оказалась. спасибо.

    Ответить
  43. Саня:

    добрый вечер! у меня ваша функция работает, только с теми изображениями, которые добавлены в ручную. для добавления миниатюр в категории использовал Taxonomy Images. да вот беда, функция не проставляет разметку. Может есть какой-то выход? Спасибо заранее!

    Ответить
  44. Виктор:

    Нашел у вас ошибку в микроразметке блога

    Ответить
    • Виталий Кириллов:

      Спасибо Виктор, уже поправил.

      Ответить
  45. Владимир:

    Вопрос: стоят Ваши функции, но когда вставляю картинки в статью галереей вида [gallery link="file" ids="667,668,669,670,671,661"]
    на него функция не срабатывает. Вам не трудно подсказать функцию, которой бы размечались изображения галереи?

    Ответить
  46. Константин:

    Здравствуйте Виталий! размечаю по новой инструкции кулинарный сайт, но валидатор ругается на отсутствие поля name.
    сейчас по Вашей рекомендации строка выглядит так — , как её изменить для кулинарного сайта?

    Ответить
  47. Константин:

    <h1 itemprop="headline"><?php the_title(); ?></h1>

    Ответить
    • Виталий Кириллов:

      Константин, а Вы автора разметили?

      Ответить
  48. Константин:

    да, разметил, вот так — <span class ="vcard author"><span class="fn"><span itemprop="author"><?php the_author(); ?></span>

    Ответить
    • Виталий Кириллов:

      Константин, вот этот кусок уберите: <span class ="vcard author"><span class="fn">

      Ответить
      • Константин:

        убрал лишний кусок, подскажите как правильно разметить name и ingredients?

        Ответить
        • Виталий Кириллов:

          <h2 itemprop="name"><?php the_title(); ?></h2>

          Константин, Вы эту статью почитайте, там все расписано.

          Ответить
          • Константин:

            у меня размечено так : <h1 itemprop="headline"><?php the_title(); ?></h1>
            если я вставляю строку как вы порекомендовали, отображается 2 повторяющихся названия, может можно как то совместить?

            Ответить
            • Виталий Кириллов:

              Вы что размечаете, тело рецепта или шапку сайта?

              Ответить
              • Константин:

                тело, single.php

                Ответить
                • Виталий Кириллов:

                  У Вас что заголовок повторяется? Приведите код файла.

                  Ответить
                  • Константин:

                    прошу прощения, хотел все содержимое файла выложить

                    Ответить
                    • Виталий Кириллов:

                      Вы скриншот куда-нибудь выложите и ссылку дайте.

  49. Василь:

    Приветствую.
    Замечательный у вас блог, Виталий!
    У меня вопрос по авторазметке картинок «image»
    Если ставлю ваш старый код в functions.php после <php, то Яндекс прекрасно видит всю разметку картинок. У гугла появляется более 100 ошибок на публикацию.
    Ставлю новый ваш код — ни яндекс ни гугл в упор разметки картинок не видят.
    Нужна ваша помощь.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Василь! А какого рода ошибки выдает Гугл и какой конкретно код вы вставляете?

      Ответить
  50. Василь:

    Не отобразился скрин. Вот ссылка на него —

    hostingkartinok.com/show-image.php?id=945c7eaa4589398fe0a433ff39a76321

    Впереди сами вставьте http

    Ответить
    • Виталий Кириллов:

      Понятно. Василь, у Вас в коде изображений вообще отсутствуют width (ширина) и height (высота):

      <img alt="зарегистрировано" src="/wp-content/uploads/2016/02/zaregistrirovano.png">

      Поэтому функция не работает.

      Ответить
  51. Наталья:

    Виталий, спасибо за такие интересные материалы. Вчера на них набрела. Первый сайт с таким доходчивым изложением.
    Попробовала микроразметку внедрить. С фотографиями не получилось. Я попробовала внести изменения в functions.php дочерней темы (из текста вставила function mayak_filter_image($content) {
    $ar_mk = ‘!!si’;
    $br_mk = »;
    $content = preg_replace($ar_mk, $br_mk, $content);
    return $content;
    }
    add_filter(‘the_content’, ‘mayak_filter_image’);). Эффекта не увидела — имедж отсутствует у гугла. В основную тему лезть боюсь. Да и вроде у дочерней темы приоритет.
    В яндекс сегодня пропробовала проверить сайт первый раз (сайт молодой — только до этапа проверки дошла). Есть ошибка «discussionUrl» написан «discussionURL». Где это поправить можно?

    Ответить
    • Виталий Кириллов:

      Здравствуйте Наталья! Изображения у Вас разметились нормально. Что касается discussionUrl, то вообще не понятно зачем нужен данный элемент микроразметки, его можно просто убрать.

      Ответить
      • Наталья:

        Как Вы наверняка заметили, разметка с хлебными крошками у меня установлена. Но устанавливала не я — встроена в тему. discussionURL сама не ставила. Пытаюсь разобраться, как бы убрать встроенную разметку. Как Вы считаете, стоит ее убирать?
        А почему у меня сообщение, в Article при проверке в гугле, что image отсутствует?
        У меня из-за двух разметок (одну Вашу поставила, где из неправильного только image, вторая родная с Blog с 4 ошибками — breadcrumb недопустимо для объекта типа Blog, publisher отсутствует, dateModified отсутствует, mainEntityOfPage отсутствует.
        Лучше бы в теме с начала не было совсем разметок…

        Ответить
        • Виталий Кириллов:

          Конечно лучше убрать встроенную разметку и сделать собственную. Я проверил одну Вашу страницу с записью с image все было в порядке.

          Ответить
          • Наталья:

            Поизучала свою тему. Нашла файл, где функции с хлебными крошками… Называется интересно Hybrid. Разметку делали с учетом условия, чем является страница — записью (http://schema.org/Blog‘-if ( is_singular( ‘post’ ) || is_home() || is_archive() ) {
            $attr[‘itemscope’] = »;
            $attr[‘itemtype’] = ‘http://schema.org/Blog‘;
            } ), вебстраницей (http://schema.org/WebPage). (Если я все правильно понимаю). Убрать такую разметку сложно… да и мысль появилась, а нужно ли…
            Что интересного в своей разметке нашла — есть блок ArticleBody (Вы в свою не делаете-может нужно?).
            Попробовала Ваш предложенный блок под себя переработать. Теперь у меня в одном типе Блог все составляющие и есть, и нет — например, dateModified и есть, и нет…

            Ответить
            • Виталий Кириллов:

              Наталья, я даже не знаю, что Вам сказать. Самое главное, чтобы валидатор микроразметки не выдавал ошибок, а библиотеки для разметки можно разные использовать, все зависит от тематики сайта.
              Вместо «ArticleBody» я использую «description», что одно и тоже.

              Ответить
              • Наталья:

                Да ладно, Виталий. Хотелось Вам сказать «что за чайники»…Мы ведь оба понимаем, что это не правильно и что робот это не полюбит.
                Нашла я куда мне нужно в мою тему добавить микроразметку (content-single.php). За одно цвет шрифта изменила на цветной. Теперь в родной теме валидатор не видит только image. Буду разбираться.
                А Вы не подскажете, какие изменения мне нужно внести, чтобы избавиться от ошибки «Свойство breadcrumb недопустимо для объекта типа Blog»?

                Ответить
                • Наталья:

                  Виталий, картинки не обрабатываются только на главной. В чем может быть причина? Там изображения берутся из миниатюры, в которую по задумке авторов шаблона я задаю, какое хочу. Задан максимальный размер. Шаблон этого изображения в виде: ширина, высота, адрес…

                  Ответить
                  • Виталий Кириллов:

                    Наталья поищите в комментариях под статьей функцию разметки миниатюр, я ее там публиковал.

                    Ответить
                • Виталий Кириллов:

                  Наталья, для хлебных крошек надо использовать библиотеку http://data-vocabulary.org/Breadcrumb, а никакой не Blog.

                  Ответить
                  • Наталья:

                    Виталий, Вы не правы про

                    http://data-vocabulary.org/Breadcrumb

                    Это уже не актуальная ссылка.
                    Смотрела Thing > Intangible > ItemList > BreadcrumbList

                    http://schema.org/BreadcrumbList

                    и https://schema.org/ListItem
                    это по-современному (как я понимаю) itemtype.
                    Значит вместо Blog должен быть Thing? А он (оно?) позволяет себя описывать, как у меня блог описан… Экспериментировать придется.
                    А картинки на главной обработались. Спасибо!

                    Ответить
                    • Виталий Кириллов:

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

  52. Константин:

    Виталий, помогите пожалуйста с моим single.php разобраться…
    prnt.sc/awlvfc

    Ответить
    • Виталий Кириллов:

      Константин, что-то вы намудрили! Для рецептов надо использовать только библиотеку schema.org/Recipe, schema.org/Article вообще здесь не к месту. Все нововведения в микроразметке не относятся к кулинарной тематике. Сделайте все так, как описано в этой статье и ничего не выдумывайте.

      Ответить
  53. Наталья:

    Вот-вот… Я по жизни бухгалтер… Там тоже всякие новшества внедряют без конца и края.
    Не понятно зачем.
    Гоша мой сайт уже не ругает. Зашла в гости к Яше… Жуть. Главная и странички мои (не записи) — Ошибка разбора html.
    На записях (над которыми билась)- microdata
    ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
    itemType =
    breadcrumb = HomeАвиабилеты дешевоБилеты в ЕвропуМосква⇄Салоники 8 938 руб., Санкт-Петербург⇄Салоники 13 250 руб.
    Что нужно теперь делать?

    Ответить
    • Виталий Кириллов:

      Наталья, Все таки попробуйте библиотеку http://data-vocabulary.org/Breadcrumb

      Ответить
  54. Павел Дарвай:

    Сказать просто спасибо мало!!!
    Супер статья и информация. давно искал ….. Попробую сам внедрить, эту … разметку, а нет прямой путь к фрилансеру)))
    Виталий, благодарю!!!

    Ответить
  55. Сергей:

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

    То есть если внедрить только те коды, которые представлены в этой статьей, они достаточны? Или это только верхушка айсберга?

    Заранее спасибо.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Сергей! Да, в данной статье описаны не все элементы микроразметки, многие пункты можно настроить по статье микроразметка Schema.org на примере кулинарного сайта. Возможно в скором будущем я выпущу отдельную статью, где постараюсь расписать все, от а до я.

      Ответить
      • Сергей:

        Доброго Вам утра, Виталий! Спасибо за ответ. Тогда подожду Вашу статью, ибо не разобрался до конца в этой теме.

        Ответить
      • Алексей:

        Было бы здорово почитать об микроразметки видео, фото галереи, блога. Увидеть скриншоты сниппетов как результат микроразметки.

        Ответить
  56. Александр:

    Здравствуйте, Виталий!
    Я, практически разметку сделал на тестовом сайте в дочерней теме: _http://muzrestor.ru/testiruem/ , но возникла проблема с картинками. С помощью Вашей статьи мне удалось их разметить на страницах и в постах, но возникла эта проблемка в анонсах. Главная страница у меня статическая, по этому они (анонсы) выводятся здесь: _http://muzrestor.ru/testiruem/stat-i и Здесь: _http://muzrestor.ru/testiruem/?rubriki=nashi-ispolniteli
    У Гоши по ошибке в каждом анонсе: image Необходимо указать значение для поля image.
    И одна на главной: headline Необходимо указать значение для поля headline.
    У Яшки только предупреждения в анонсах: ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов творческих работ: поле description или articleBody отсутствует или пусто
    ПРЕДУПРЕЖДЕНИЕ: значение «2016-06-3» в поле dateModified не является корректными значением даты. Дата должна быть в формате ISO 8601
    Пробовал Ваши коды mayak_thumbnail_image , — не помогает.
    У меня анонсы выводятся по-особому, не как у людей. Может подскажете, «где собака порылась»?
    С уважением, Александр.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Александр! Просто текст анонсов тоже надо размечать, подобно разметки записи. Дождитесь статьи, я немного освобожусь и выпущу статью, где будет все.

      Ответить
      • Александр:

        Здравствуйте, Виталий!
        class-content-post_list у меня размечен без ошибок:

        <section class="tc-content «>
        <?php
        do_action( '__before_content' );

        printf('%2$s’,
        $_sub_class,
        $_content
        );

        do_action( ‘__after_content’ );
        ?>

        Ответить
        • Александр:

          Правильная строка после printf(

          ‘%2$s’,

          Ответить
          • Александр:

            Не вставляется строка section class=»%1$s» itemprop=»description»>%2$s</section

            Ответить
  57. Виктор:

    Здравствуйте! Виталий, подскажите для кулинарного сайта нужно внедрять разметку указанную в этой статье или достаточно той что указана у вас в этой статье: http://seo-mayak.com/seo-prodvizhenie/poiskovye-sistemy/makrorazmetka-schema-org.html

    Ответить
    • Виталий Кириллов:

      Здравствуйте Виктор! Для кулинарного сайта действует старая микроразметка.

      Ответить
  58. Александр Силиванов:

    Ну вот, проверил микроразметку. Гуголь доволен, Яндекс бранится. По поводу микроразметки комментариев. Как говорится, «жена довольна, теща — нет; теща довольна — жена бранится! И куды бедному хрестьянину податься?» 🙂

    Ответить
    • Виталий Кириллов:

      В чем ошибка?

      Ответить
  59. Елена Шикова:

    Добрый день! Вставила вашу функцию
    function mayak_filter_image($content) {
    $ar_mk = ‘!!si’;
    $br_mk = »;
    $content = preg_replace($ar_mk, $br_mk, $content);
    return $content;
    }
    add_filter(‘the_content’, ‘mayak_filter_image’);

    и наблюдаю чудо в коде страницы пропадает строчка ‘ и соответственно появляются три ошибки разметки, о том что недопустимые атрибуты для Article. Если на настоящем сайте не увидите из-за CDN, то можете на болванке посмотреть

    Ответить
  60. Андрей:

    Здравствуйте, Виталий. Не могли бы Вы подсказать где необходимо прописать код itemscope itemtype="http://schema.org/Article".
    Как я понимаю, этот код нужно вставить в тег, который оборачивает всю область контента записи (текст и комментарии) и эти изменения нужно вносить в файле single.php.
    Проблема в том, что внося изменения в файле single.php дочерней темы Twenty Therteen при нажатии «Сохранить» не происходит никаких изменений в коде.
    Файл single.php приведен ниже:
    get_header(); ?>
    <div id="primary" class="content-area">
    <div itemscope itemtype="http://schema.org/Article" id="content" class="site-content" role="main">
    <?php /* The loop */ ?>
    <?php while ( have_posts() ) : the_post(); ?>
    <?php get_template_part( 'content', get_post_format() ); ?>
    <?php twentythirteen_post_nav(); ?>
    <?php comments_template(); ?>
    <?php endwhile; ?>
    </div>
    </div>
    Мои предположения, что может быть я не туда вставляю данный код или, возможно, как-то влияет файл page.php, в котором первые строчки кода повторяются:
    Файл page.php:
    get_header(); ?>
    <div id="primary" class="content-area">
    <div id="content" class="site-content" role="main">
    <?php /* The loop */ ?>
    <?php while ( have_posts() ) : the_post(); ?>
    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    и т.д
    Не могли бы Вы помочь в этом разобраться.

    Ответить
    • Виталий Кириллов:

      Здравствуйте Андрей! Почитайте про функцию get_template_part() и думаю сами найдете ответы.

      Ответить
  61. Заур Магомедов:

    Прочитал про нововведения и исправил все ошибки, но одно но… Гугл ругается на картинки — «Необходимо указать значение для поля image.» и указывает на строку открытия сущности — itemscope itemtype=»http://schema.org/Article». Что тут надо сделать? Уже голову сломал. Сайт у меня работает не на WordPress, поэтому функции бесполезны.

    Ответить
    • Виталий Кириллов:

      Про другие движки ничего не скажу. Статья для WordPress.

      Ответить
      • Заур Магомедов:

        Но микроразметка ведь не только для WordPress предназначена? Да и в заголовке статьи у вас про WordPress ничего не сказано…

        Ответить
  62. Maxim:

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

    Ответить
  63. Игорь:

    Виталий, здравствуйте. Подскажите, пожалуйста, как вывести адрес миниатюры в вашем примере?

    itemprop=»image» itemscope itemtype=»https://schema.org/ImageObject»

    Это было бы логично. В таком виде как сейчас выдёргиваются картинки в записи, и они могут не соответствовать заголовку поста. (например, у меня первая картинка в посте — это фото с цитатой… и она не имеет отношения к названию записи).

    Заранее благодарю.

    Ответить
  64. Игорь:

    Здравствуйте, Виталий.
    Вы у меня как последняя инстанция больше обратиться не к кому. Сделал микроразметку по вашей статье и все работало на Ура! Но сейчас сменил шаблон и если главную и записи я разметил без проблем, то в библиотеке schema.org/BlogPosting выдает ошибку «Необходимо указать значение для поля image.» я все ваши коды со старого шаблона перенес на новый,а толку нет. Ставлю назад старый шаблон — все отлично, а на новом проблема с миниатюрами. Это может быть из за того, что у меня за рубрики отвечают не файлы archive.php или category.php, а files/list.php? И как это можно исправить?
    Спасибо!

    Ответить
    • Виталий Кириллов:

      Игорь, это значит, что HTML миниатюр у Вас прописан прямо в файлах шаблона, и разметку надо делать непосредственно в коде одного из файлов. Возможно это list.php, я точно не могу сказать не видя самого кода.

      Ответить
  65. Кирилл:

    О господи, слава богу я разметил изображения, спасибо большое! Буду всем рекомендовать эту статью

    Ответить
  66. Michael:

    Здравствуйте. Благодарю за ваши скрипты по разметке изображений! Как жаль, что такой функционал не идет в вордпрессе по-умолчанию…
    Имеется такой вопрос:
    вставил эти скрипты в function.php
    //микроразметка для изображений
    function mayak_filter_image($content) {
    $ar_mk = ‘!!si’;
    $br_mk = »;
    $content = preg_replace($ar_mk, $br_mk, $content, 1);
    return $content;
    }
    add_filter(‘the_content’, ‘mayak_filter_image’);

    //фото в сниппете
    function mayak_result_image($content) {
    return preg_replace(array(‘{<img itemprop="image"}'), array('<img itemprop="resultPhoto"'),$content, 1);
    }
    add_filter('the_content', 'mayak_result_image');

    но к сожалению ни в гугле, ни в яндексе в поисковой выдаче нет фото рецептов, хотя в валидаторах все хорошо.
    Подскажите пожалуйста, правильные ли я скрипты Вашего написания использовал и как добиться отображения фото рецепта в поисковой выдаче?
    Заранее благодарен!

    Ответить
    • Виталий Кириллов:

      Здравствуйте!
      Чтобы фото появились в сниппетах, на это надо время. Если Вы сделали все правильно и в микроразметке нет ошибок, должны появиться.

      Ответить
      • Michael:

        Спасибо, что ответили!
        А Ваших скриптов микроразметки изображений и фото в сниппете достаточно, чтобы у рецепта в поисковой выдаче присутствовала фотография? Или есть ньюансы?

        Ответить
        • Виталий Кириллов:

          На моем кулинарном блоге, миниатюры выводятся и в Яндексе и в Гугле.

          Ответить
          • Денис Повага:

            Виталий, доброго дня. У меня проблема в том, что в длинных статьях, где имеются много изображений, приведенный код выше, для — Поле «image» и библиотека «schema.org/ImageObject», не оборачивает все изображения правильно. в одном случае, не добавляет в самом начале < span … , в другом, не закрывает. И изображения размечаются не правильно. Или часть размечается, часть нет. В подписи адрес одной из проблемных статей. Подскажите пожалуйста, что пошло не так. Спасибо заранее…

            Ответить
            • Виталий Кириллов:

              У Вас размеров в картинках нет: width и height, поэтому функция не работает.

              Ответить
              • Денис Повага:

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

                Ответить
                • Виталий Кириллов:

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

                  Ответить
                • Виталий Кириллов:

                  Да, и размеры нужны для микроразметки, иначе будет ошибка.

                  Ответить
                  • Денис Повага:

                    Спасибо, Виталий!

                    Ответить
  67. Александр:

    Здравствуйте. Помогите, пожалуйста, разобраться в коде:
    function mayak_filter_image($content) {
    $ar_mk = ‘!!si’;
    $br_mk = »;
    $content = preg_replace($ar_mk, $br_mk, $content);
    return $content;
    }
    add_filter(‘the_content’, ‘mayak_filter_image’);

    Где и вместо чего вставлять урл сайта и размеры картинок?

    Ответить
    • Виталий Кириллов:

      Ничего в функцию вставлять не надо, просто копируете функцию и вставляете ее в файл functions.php вашей темы.

      Ответить
      • Александр:

        А в каком месте functions.php его надо вставлять?

        Ответить
  68. Сержик:

    Добрый день, может подскажите. Стоит плагин WP-Postratings и Platinum SEO. У WP-Postratings после звездочек есть свой description, дата и т.д. Яндекс упорно берет description с него, но фишка в том, что когда я меняю содержимое description статьи в окне Platinum SEO , оно не изменяется в wp-postrating.
    Хотя Google берет всё правильно.
    Кеш чистил, что только не делал он всё равно показывает самый первый description

    Ответить
  69. source:

    Google опять ругается на картинки. Можете внести в функцию mayak_filter_image необходимые изменения?

    Ответить
    • Виталий Кириллов:

      Функция работает исправно и на мой сайт Гугл не ругается.

      Ответить

Оставить комментарий

Внимание комментатор! Прежде чем вставить: HTML, JavaScript или PHP код в свой комментарий, преобразуй его в html сущность!

Subscribe without commenting

» Подписаться на комментарии по RSS