Привет, дорогие читатели и гости блога! В уже рассказывал о важности микроразметки для сайтов и блогов. Сегодня на конкретном примере я покажу как сделать микроразметку блога. Сразу предупрежу, что я не спец в верстке, поэтому взял в качестве примера простенький шаблон, а не замудренный.
Шаблон называется XMarkup. Скачать его можете здесь вместе с инструкцией по созданию блога. Эта тема WordPress довольно известна в узких кругах, к тому же это моя первая тема блога.
Итак, чтобы внедрить микроразметку Schema.org, нам в первую очередь нужно проверить есть ли у нас микроразметка. Сделать это можно в Яндекс Вебмастере или в вебмастере Google. Но я рекомендую проверять именно через Яндекс, потому что гугл покажет что все отлично, если у вас установлен любой другой формат микроразметки, а нас интересует именно Schema.org. Для главной страницы должна присутствовать разметка анонсов постов, если выводятся последние записи, категории и дата анонсов, а так же изображения. Вот какой результат показал только что созданный мною сайт: Как видите, есть лишь описание последней статьи, выводимое плагином All In One Seo Pack, и немало других ошибок. Поэтому я буду делать микроразметку Schema.org с нуля. В первую очередь отключите возможность SEO плагину делать микроразметку Shema. В плагине All In One Seo Pack эту возможность можно отключить, просто убрав галочку в SEO настройках. По сути микроразметка это просто подстановка необходимых правил к определенным кускам кода. Этой подстановкой мы говорим поисковым системам, что означает тот или иной кусок кода и его содержимое. Для блога должны присутствовать следующие классы:
- Основа главной страницы — itemscope itemtype=”http://schema.org/BlogPosting”
- Основа записи блога — itemscope itemtype=”http://schema.org/Article”
- Основа комментариев — itemprop=”comment” itemscope itemtype=”http://schema.org/Comment”
- Название статьи — itemprop=”name”
- Описание статьи — itemprop=”description”
- Тело статьи — itemprop=”articleBody”
- Рубрика — itemprop=”articleSection”
- Дата публикации — itemprop=”datePublished”
- Автор — itemprop=”author”
- Автор комментария — itemprop=”creator”
- Текст комментария — itemprop=”text”
- Изображения — itemprop=”image”
Микроразметка записей блога
За вывод записей блога отвечает файл single.php соответственно все манипуляции нужно делать в этом файле. В первую очередь нужно указать поисковым системам, что этот формат страницы является постом блога делается это при помощи следующего правила:
itemscope itemtype=”http://schema.org/Article”
Просто ищем код, отвечающий за вывод всего текста страницы и в его класс вставляем вышеуказанное правило. Получится примерно так: Теперь нужно разметить название статьи. Как я уже заметил выше, название размечается правилом itemprop=”name”. Ищем кусочек кода с упоминанием title и в его класс вставляем правило. Выглядеть это будет так: Теперь размечаем текст статьи при помощи правила itemprop=”articleBody”, вставив его в класс отвечающий за вывод статьи. Говоря простым языком просто ищем такой код и в его класс вставляем правило. Выглядеть это будет так: После этого нужно разметить рубрики при помощи правила itemprop=”articleSection”. У меня в коде для слова «Рубрика» и ссылки с названием самой рубрики был прописан один класс, поэтому я ссылку взял в дополнительный тег и внутрь него вставил правило articleSection. Если сделаете правильно, у вас должно получиться вот так:
Эти три правила обязательно должны присутствовать в микроразметке записи блога, а вот дату публикации, автора статьи, хлебные крошки можете размечать по желанию. Если у вас выводится дата и автор, то лучше разметить. Но есть оптимизаторы, которые рекомендуют для информационных блогов и сайтов вообще убирать дату публикации, на то есть свои причины, о которых я расскажу как-нибудь в другой статье.
Микроразметка даты публикации в WordPress
Если вы хотите сделать разметку даты публикации сначала убедитесь, что она у вас выводится в необходимом формате. Валидатор поддерживает только формат даты ISO 8601. Если интересует, почитайте в википедии что это за формат. Если говорить простым языком, то дата публикации должна быть такого вида:
Год-месяц-число (2015-07-10)
Здесь у меня возникла первая трудность с микроразметкой. В выбранном мною шаблоне, дата выводилась через попу красиво, но не оптимизирована под Яндекс.
Можно было изменить формат, подправить стили или сделать в этом случае микроразметку даты через файл function.php, но я не силен в PHP, а возиться с изменением стилей не особо хочется. Я решил просто удалить этот блок, а дату вывести в виде обычной строчки при помощи вот этого куска кода:
Дата:
И соответственно в файл style.css прописал стили для класса date. В итоге стало вот так в коде:
И на странице:
Микроразметка автора статьи
Микроразметка schema для автора статьи выводится при помощи правила itemprop=”author”. Снова ищем код выводящий автора статьи и заключаем его в тег с правилом микроразметки. Должно выглядить так:
Ух! На этом микроразметка страницы поста закончена. Проверяем в валидаторе и видим следующее:
Микроразметка комментариев
Для страницы записи блога я настроил микроразметку всего, кроме комментариев. Но если не сделать микроразметку комментариев, поисковый робот Яндекса может не определить, что это комментарии, а посчитает их продолжением статьи. А если у вас много комментариев, то в этом случае они сделают основной текст нерелевантным.
Что это значит? Допустим, вы написали оптимизированную статью «Как раскрутить группу ВКонтакте» длиною в 3 К символов, а в комментариях вас благодарят за советы, спрашивают про совсем другие соц. сети, в общем пишут что угодно, кроме главного ключа – раскрутить группу ВКонтакте. Когда вы только опубликуете статью, она будет релевантна на сто процентов, но чем больше будет писаться комментариев, не связанных с основной темой, тем менее релевантной будет ваша статья в глазах поискового робота. Чтобы этого не произошло, нужно роботу дать понять, что комментарии являются комментариями, а не продолжением статьи.
Перед внедрением микроразметки комментариев, проверьте не присутствует ли уже в шаблоне какой-то другой тип микроразметки. В моем случае оказалось, что в шаблоне уже есть микроразметка комментариев vcard. Но этот тип микроразметки не поддерживается Яндексом, поэтому его нужно удалить.
По хорошему нужно выкорчевывать такую микроразметку с корнем, но для этого придется перелопатить весь шаблон вдоль и поперек, проще сверстать новый. Поэтому достаточно просто переименовать vcard на любое другое слово, чтобы данный тип микроразметки не учитывался. Поочередно открываем файлы своего блога и ищем упоминание vcard, затем переименовываем его на любое слово, например, card. Переименовав vcard, мы можем убедиться что микроразметки комментариев не существует, что нам и требовалось, теперь будем внедрять микроразметку shema.org Комментарии размечаются при помощи правила
itemprop=”comment” itemscope itemtype=”http://schema.org/Comment”
Чаще всего микроразметка комментариев протисходит в файле comments.php или function.php. Ищем блок или начало функции, отвечающиую за вывод комментариев и подключаем вышеуказанное правило. Вот пример как это подключено в моем случае:
Теперь необходимо разметить автора комментария, дату публикации и сам комментарий. Начнем с автора. Автор комментария размечается правилом itemprop=”creator”. Просто ищем в коде функцию, выводящую автора комментария и вставляем данное правило. Должно получится вот так:
Теперь размечаем дату публикации комментария. Дата комментария должна быть в формате ISO 8601. То есть точно так же, как и при выводе даты публикации статьи. Здесь опять же возникла небольшая проблема с выбранным мной шаблоном.
Во первых формат даты был не тот, что нужен, во вторых для даты был прописан отдельный CSS класс. Да и просто выводилось три отдельных записи. Чтобы вам было понятнее, что я имею ввиду, вот кусочек кода, который выводил у меня дату комментария до внедрения микроразметки:
echo ‘’; comment_date(‘j ‘); rus_month2(); comment_date(‘, Y в g:i |’); echo ‘’;
Я поменял формат вывода даты на ISO 8601, и вставил правило микроразметки даты публикации schema org- itemprop=”datePublished”. В результате все стало выводиться как надо. Вот пример кода, как стало:
Теперь нужно разметить сам комментарий. Делается это при помощи правила itemprop=”text”. Ничего нового, так же ищем функцию вывода текста комментария, и вставляем необходимое правило. Вот пример того, что должно получиться: Теперь проверяем результат в валидаторе Яндекса:
Если нет никаких предупреждений, значит все отлично. У нас все размечено и поисковый робот будет понимать, что к чему относится на блоге.
Автоматическая микроразметка комментариев WordPress
Недавно я случайно попал на блог Виталия Кириллова. Он в своей статье предлагает при помощи PHP убить сразу двух зайцев — исправить ошибку с неподдерживаемым Яндексом форматом Vcard и автоматически разметить комментарии. Я проверил на тестовом блоге, все прекрасно работает.
Микроразметка картинок
Микроразметка картинок, или правильней будет сказать — изображений важна, если вы используете уникальные картинки. Во первых это улучшит видимость ваших изображений в поиске картинок, во вторых – это придаст оригинальности сниппету в поисковой выдаче.
Я впервые задумался о микроразметке картинок после того, как увидел подобный сниппет в выдаче. Кстати, вот нашел его в старых файлах:
Мне стало интересно, как это изображение появилось в сниппете выдачи. Открыв исходный код страницы, я увидел, что изображению присвоено свойство itemprop=”image”, это свойство микроразметки schema org для изображений.
Так как я очень хорошо знаком с блогом advdk.com, я написал его автору Алексею Кобзареву на почту с вопросом, как он сделал микроразметку изображений. Алексей дал мне ссылку на пост своего блога, где рассказывал о внедрении микроразметки на блог. Почитать этот пост можете здесь. На своем блоге Алексей опубликовал PHP код, который автоматически делает микроразметку всех изображений блога на WordPress, подставляя правило itemprop=”image” к каждому изображению записи. Достаточно вставить PHP код в файл functions.php в начало сразу после открывающего тега
// Микроразметка картинок function mayak_image_marking($content) { global $post; $pattern = "После того как я вставил этот код, все картинки автоматически разметились.
Микроразметка хлебных крошек
Я уже писал про хлебные крошки на своем блоге, но от той навигационной цепочки была польза только в виде визуального восприятия, где находится пользователь в данный момент. Если же рассматривать с точки зрения SEO, пользы от них особой не было. Я долго искал способ внедрения хлебных крошек, чтобы навигационная цепочка красиво отображалась в сниппете. И наконец нашел на одном из блогов. Сейчас вот так выглядят мои записи в поисковой выдаче Google: Способ довольно простой, просто повторите все действия, что я сейчас опишу.
1. Откройте файл functions.php сразу после открывающегося тега
// подключаем хлебные крошки function dimox_breadcrumbs() { $text['home'] = 'Главная страница'; // текст ссылки "Главная" $text['category'] = 'Архив рубрики "%s"'; // текст рубрики $text['search'] = 'Результаты поиска по запросу "%s"'; // текст с результатами поиска $text['tag'] = 'Записи с меткой "%s"'; // текст тега $text['author'] = 'Статьи автора %s'; // текст автора $text['404'] = 'Ошибка 404'; // текст страницы 404 $show_current = 0; // 1 - показывать название текущей статьи/страницы/рубрики, 0 - не показывать $show_on_home = 1; // 1 - показывать "хлебные крошки" на главной, 0 - не показывать $show_home_link = 1; // 1 - показывать ссылку "Главная", 0 - не показывать $show_title = 1; // 1 - показывать подсказку (title) для ссылок, 0 - не показывать $delimiter = ' » '; // разделить между "крошками" $before = ''; // тег перед текущей "крошкой" $after = ''; // тег после текущей "крошки" /* === КОНЕЦ ОПЦИЙ === */ global $post; $home_link = home_url('/'); $link_before = ''; $link_after = ''; $link_attr = ' rel="v:url" property="v:title"'; $link = $link_before . '%2$s' . $link_after; $parent_id = $parent_id_2 = $post->post_parent; $frontpage_id = get_option('page_on_front'); if (is_home() || is_front_page()) { if ($show_on_home == 1) echo ' '; } else { echo ' '; } } // end dimox_breadcrumbs()Обращаю ваше внимание, что хлебные крошки должны располагаться под заголовком H1 если они стоят перед заголовком, это конечно не критично, но неправильно. Заголовок это главное, на что обращают в первую очередь поисковые роботы. Если у вас вообще не выводится заголовок H1 (такое бывает в некоторых бесплатных шаблонах WordPress), а вместо него присутствует заголовок H2, вам нужно это срочно исправлять! По логике вещей на странице не может быть заголовок второго уровня при отсутствии заголовка H1. Я об этом не раз упоминал и подробно описал в статье – SEO оптимизация статей блога.
2. Теперь в то место где требуется вывести навигационную цепочку вставьте вот этот код:
3. После вставки хлебных крошек в шаблон темы, нужно настроить стили для хлебных крошек. Для этого откройте файл style.css и в самый конец вставьте вот этот код:
.entry-meta { font-size: 12px; width: 100%; height: auto; margin: 11px -1px 11px; font: normal 11px Arial, sans-serif; color: #000; text-decoration: none }При желании измените стили на свои, я просто привел пример со своего блога. Если вы все сделали правильно, через несколько недель в сниппете Google можете увидеть настроенные хлебные крошки.
Микроразметка главной страницы блога
Все анонсы статей на главной странице блога размечаются при помощи правила BlogPosting, а затем уже для анонсов размечаются названия и описания. Чаще всего за главную страницу отвечает файл index.php но может быть и другой. На пример, в теме моего блога за вывод главной страницы отвечает файл content.php. Если у вас шаблон Xmarkup, то смело открывайте файл index.php и в коде ищите класс, отвечающий за вывод всех анонсов записей на главной странице. В этот класс нужно вставить свойство:
itemscope itemtype=”http://schema.org/BlogPosting”
Вот как это должно выглядеть в коде:
Теперь нам нужно разметить название статей, для этого ищем в коде упоминание После того как нашли, заключаем его в тег span со значением itemprop=”name”. Должно получиться примерно так:
Следующий шаг это описание статей выводимых анонсом на главной странице. Размечаются описания статей на главной при помощи свойства itemprop=”description” Просто ищем в файле код и перед ним в spanвставляем значение itemprop=”description” Должно получиться примерно так:
Теперь необходимо сделать разметку автора статьи. Она делается при помощи свойства itemprop=”author”. Просто ищите в файле код, отвечающий за вывод автора. Чаще всего это и придайте ему свойство. Должно получиться примерно так:
Микроразметка категорий для главной страницы отмечается свойством itemprop=”articleSection”. Ищем в код отвечающий за вывод категории. Называться может по разному, но всегда следует за словами «Рубрика», «Postedin» или другими в зависимости от того что видно на странице вашей темы. В выбранном мной шаблоне, код, выводящий название категории — category->cat_name. Смело заключаем его в и ставим значение articleSection. Должно получиться так:
У нас остается разметка даты публикации. Ее можете сделать если хотите по желанию. Действия аналогичные микроразметке даты публикации записи блога. Я не стал размечать, так как не вижу смысла, если уже все размечено в постах. На этом микроразметка главной страницы блога закончена, проверяем в валидаторе Яндекса и видим следующее:
Яндекс прекрасно различает все анонсы на главной страницы, видит названия, категорию, дату публикации и автора.
Вот это да!!!! Насколько я помню, ты говорил, что заказывал разметку своего блога за приличные деньги, а сейчас всем палишь фишки и все бесплатно? Ну ты молодец!
Классная инструкция. Хорошо,что мне установили уже микроразметку ( очень дешево) а то я бы очень жалел об этом .
Привет, Игорь. Да, в свое время я заказывал микроразметку за приличные деньги, но когда-то же надо учиться и самому 🙂
Если честно, мучился дня 4, зато теперь понял что к чему.
Привет. А я заказывал микроразметку. Сам залез, посмотрел, за ухом почесал и пошел к профи 🙂
Привет. Я для своего блога так же заказал, почесав за ухом 🙂
Мне та простительно, а вот тебе?)))))
Так я же не верстальщик )) Но приходиться изучать потихоньку.
Приветствую, Андрей!
Большое спасибо за статью. Сам давно поглядываю на схемуорг, но никак руки не доходят. Думаю ты меня вдохновил 🙂
Привет, Павел. Вот так всегда, сапожник без сапог 🙂
Андрей, спасибо за подробную информацию про микроразметку. Инструкция достаточно понятна. Надо пробовать самому. А заказать всегда успеется.
У кого как успехи? Видимость в ПС улучшилась?
Андрей, у тебя в коде «dimox_breadcrumbs» получилось много пустого пространства, а пост получился классный. 🙂
Привет, Алексей. Да, я заметил, это все из-за плагина WP Syntax, который отображает код. Постоянно у меня с ним проблемы. Не посоветуешь какой-нибудь другой способ вывода кода?
Самый лучший, это не плагин, а теги pre. Видел как у меня выводиться код на блоге? Это они, только я немного стилей добавил и все. Работает, как часы, даже лучше.
А стилями синтаксис можно как-то подсветить? У тебя этого нет.
Андрей, спасибо за статью. Я как раз собираюсь разметить свой блог. Долго созревала, но уже просто некуда тянуть. А по твоему примеру вижу, что не так страшен волк, как его малюют )
Пожалуйста, Надежда. да, волк не так страшен 🙂 я поначалу тоже не сразу разобрался, но оказывается не все так сложно.
Привет, конечно пора 🙂 Ну или можно воспользоваться моим предложением — /sdelayu-mikrorazmetku-besplatno.html
Тоже надо будет вплотную заняться на своем блоге микроразметкой, тайтлами, дескрипшнами, все руки никак не дойдут. Обязательно поставлю этот пункт в план на следующий месяц )
Константин, желаю удачи с реализацией!
Оказывается это все легко было сделать! А я заказывал:-D
Андрей, зато теперь уверен, что все сделано )) Я тоже заказывал для блога, а вот на развлекательном сайте сейчас буду делать сам.
У тебя шаблон сложный. Только бы измучился бы весь 🙂
Сколько будет приблизительно стоить эта работа у фрилансеров: установить хлебные крошки и микрозаметку? Кто нибудь подскажет.
Олег, все зависит уровня фрилансера и сложности микроразметки. Кто-то и за 300 р. сделает, а кто и за 1 000 не возьмется. скиньте в личку ссылку на ваш сайт, посмотрим, что можно сделать.
Андрей, привет.
Я написал тебе в личку.
Привет, Олег. Ответил.
Микроразметка очень важна для сайта. Я как бы не пыталась, все рано ни чего не получилось. В результате обращалась к профессионалам.
Елена, конечно лучше обратиться к профессионалам. Это значительно секономит время. Но при желании, каждый может в этом разобраться.
Привет. Обязательно нужно сделать.
Привет, Андрей! Вставила код микроразметки картинок и увидела белый экран — блог перестал работать (((
Привет, Надежда. Скорее всего код был вставлен неправильно. Нужно было вставлять строго после открывающегося тега ? >
Андрей, код был вставлен верно. кстати, твой плагин добавляет нумерацию к скопированному тексту. очень неудобно. Я ее убрала, но это не помогло )
Надежда, попробуй сейчас скопировать код. При переключении с HTML в визуальный редактор, код был искажен. Сейчас все поправил.
Вот теперь другое дело. Спасибо, Андрей! Попробую все-таки сделать микроразметку, пользуясь твоей статьей.
Пожалуйста! Спасибо за замечание по статье 🙂
Сейчас на половине пути ) Разметила заголовок, тело статьи, дату. Не получается с комментариями (( Но еще копаюсь. Позже напишу, как все получилось
Думаю все получится 🙂 Удачи!
Уррра! Сделала микроразметку постов и главной. Одно осталось: страницы рубрик. Как разметить динамические страницы рубрик?!!
Поздравляю, молодец! Cтраницы рубрик размечаются так же как и главная страница блога, чаще всего в файле category.php
Спасибо )) А про рубрики — уверен? Чтобы не получилось на блоге пара десятков главных страниц )))
Уверен 🙂 Микроразметка на это никак не влияет. Даже размечая главную страницу, мы ведь не указываем, что это главная, мы просто указываем какой кусок текста является анонсом статьи, какой датой и т. д.
У каждой рубрики своя ссылка и свой тайтл.
Приветствую! Вопрос:
Почему для разметки главной используется itemscope itemtype=http://schema.org/BlogPosting , а для страницы статьи itemscope itemtype=http://schema.org/Article если BlogPosting это дочерний элемент Article?
Как-то не логично получается. Я еще понимаю наоборот делать…
Привет. Совершенно верно, если смотреть на официальном сайте Schema иерархию разметки, BlogPosting является дочерним элементом Article. Но приходится подстраиваться под поисковые системы, у меня Яндекс выдавал ошибку.
с недавним обновлением микроразметки от 9 декабря у всех на блогах появились новые ошибки Подскажите как можно все поправить?
image [ImageObject]:
height: отсутствует (обязательное)
url: отсутствует (обязательное)
width: отсутствует (обязательное)
Для image указан недопустимый URL.
publisher: отсутствует (обязательное)
dateModified: отсутствует (рекомендуется)
mainEntityOfPage: отсутствует (рекомендуется)
Я не смогу помочь, пока не взгляну на исходный код. Вы бы скинули ссылку в подписи.
интересует как сделать без ошибок поля
height
width
publisher:
Здравствуйте! Делаю себе микроразметку, все получается хорошо, кроме комментариев! В гугле показывает все замечательно, а вот яндекс ругается, выдает ошибку:
» 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» в разные блоки, также пробовал разделять его, все равно ошибка выскакивает!
Дмитрий, судя по структуре, скорее всего у вас неправильно размечена основа микроразметки комментариев или основа страницы блога. Я выслал вам на почту архив с этой темой, сравните файлы function.php и comments.php и single.php
Только у меня там старый формат — schema.org/UserComment измените на schema.org/Comment
Кстати, гугл показывает у вас ошибки на микроразметку, т.к. она немного обновилась, вот с помощью этой статьи я себе все исправил
http://seo-mayak.com/seo-prodvizhenie/poiskovye-sistemy/mikrorazmetka-gugl-yandeks-i-schema-org.html
или вот еще
http://kostyakhmelev.ru/texnicheskaya-chast/mikrorazmetka-schema-org-vnedryaem-na-sait.html
Этот комментарий можете не публиковать или подредактируйте немножко из-за ссылок 🙂
Это от меня вам небольшая благодарность :). Спасибо!
Да, Дмитрий, я про ошибку в курсе. С нововведениями гугла сам только несколько дней назад разобрался благодаря блогу Виталия Кириллова, который вы указали в комментарии. Себе пока разметку не обновлял, надо будет разобраться с этим.
Андрей, Спасибо! Разобрался. Оказывается блок комментариев надо было переместить внутрь блока Article. Повозившись с кодом у меня все получилось, яндекс не ругается! Кстати, интересный у вас блог, добавил в закладки…
Ну, хорошо, что все разрешилось 🙂
Закладки это хорошо, заглядывайте иногда 🙂
Добрый день! у меня функция работает, только с теми изображениями, которые добавлены в ручную. для добавления миниатюр в категории использовал Taxonomy Images. да вот беда, функция не проставляет разметку. Может есть какой-то выход? Спасибо заранее!
Вы эти картинки как выводили? В коде вывода и добавьте разметку. Другой момент, что для гугла надо по другому делать….