Всем привет! Надо идти в ногу с временем и сегодня на SEO Маяк я расскажу, что за «зверь» семантическая микроразметка Schema.org.
Я не буду описывать разные типы микроразметок, скажу лишь, что на блоге уже есть одна статья, связанная с данной темой — это Микроразметка в хлебных крошках, там я использовал разметку RDF, можете почитать.
Микроразметка Schema.org была признана основными поисковыми системами еще 2011 году и в данное время активно внедряется веб-мастерами в свои проекты.
Наверное главный вопрос, что дает эта микроразметка и стоит ли ей вообще размечать сайты?
Микроразметка помогает роботам более точно определять и соответственно структурировать информацию с сайтов. Веб-мастер размечая те или иные данные указывает роботу как он их должен трактовать или интерпретировать, как угодно.
Также микроразметка влияет на внешний вид сниппета. У меня пока еще нет своего примера для демонстрации, но вы наверняка встречали в выдачи Яндекса такие сниппеты:
Так вот, это результат правильной микроразметки кулинарного сайта. Кстати для каждой тематики существуют свои словари, посмотреть их можно тут. Я же сейчас буду размечать свой кулинарный блог и заодно покажу вам как это делается. Поехали!
Микроразметка шапки сайта
Советую обязательно сделать резервную копию файлов, дабы избежать ненужных проблем. Прежде всего идем в Яндекс Вебмастер и жмем на строчку «Проверить микроразметку»:
На открывшийся странице в поле «URL документа» вбиваем свой домен и жмем кнопку «Проверить»:
Как видите, на dommenu.ru микроразметка не обнаружена. Теперь давайте это дело поправим.
Первым делом надо снять галочку в пункте «Use Schema.org Markup» в плагине All in One SEO Pack.
Затем с помощью FTP клиента Notepad++ открываем для редактирования файл header.php и ниже тега <body> ищем такую строчку:
<div id="wrapper">
У кого-то это может быть:
<div id="header">
У вас конечно может быть другая структура шаблона, главное, чтобы действие контейнера <div> распространялось до конца кода файла header.php. Надеюсь понятно объясняю.
В самый конец строчки нам надо вставить такой элемент разметки:
itemscope itemtype="http://schema.org/WPHeader"
В общем выглядеть это должно так:
<div id="wrapper" itemscope itemtype="http://schema.org/WPHeader">
Теперь снова обратимся к валидатору микроразметки, интересно что он нам покажет:
Обратите внимание на слово помеченное стрелочкой. Именно это слово находится в конце вставленного нами элемента микроразметки и не трудно догадаться, что это часть словаря Schema.org, которая будет отвечать за шапку сайта. Весь словарь можно посмотреть здесь.
В предупреждение сообщается, что не хватает обязательного поля description. Давайте его добавим. Для этого ищем в коде такую строчку:
<h2><?php bloginfo('description'); ?></h2>
И прямо в тег h2 (у вас это может быть другой тег) добавляем следующее:
itemprop="description"
После чего строчка должна выглядеть так:
<h2 itemprop="description"><?php bloginfo('description');?></h2>
Смотрим валидатор:
Ага, валидатор просит 250 символов в описании сайта, ну что же, давайте мы ему их предоставим:
Теперь полный порядок. Но на этом микроразметка header.php еще не закончена. Ищем строчку с заголовком сайта. У меня она выглядит так:
<h1><a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1>
И также в тег h1 или любой другой, которые на вашем сайте оборачивает заголовок вставляем следующий элемент микроразметки:
itemprop="headline"
Строчка теперь выглядит так:
<h1 itemprop="headline"><a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1>
Обращаемся к валидатору:
Теперь в микроразметке шапки у нас есть название сайта. С шапкой вроде все, самое время приступить к разметке записей.
Микроразметка страниц с записями (рецептами)
Открываем любую страницу с рецептом, копируем URL и вставляем в валидатор:
Ужас, сплошные предупреждения, хотя шапочка теперь у нас аккуратная. А что самое главное нет никакой информации о самом рецепте. Оставим предупреждения пока в покое, ими мы займемся чуть позже, а пока приступим к разметке рецепта.
Для этого открываем файл single.php. У кого неразбериха с файлами советую почитать мою статью о структуре современных шаблонов.
Ищем в файле класс, который находиться ниже такого PHP кода:
<?php get_header(); ?>
У меня он выглядит так:
<div class="span-24" id="contentwrap">
И в самый конец строчки вставляем следующий элемент микроразметки:
itemscope itemtype="http://schema.org/Recipe"
Кстати вы заметили слово «Recipe». Это значит вступает в силу раздел словаря Schema.org отнёсшийся к рецептам. Должно получится следующее:
<div class="span-24" id="contentwrap" itemscope itemtype="http://schema.org/Recipe">
Просим валидатор проверить:
Итак раздел «Рецепты» активирован, но он пустой. Теперь надо его наполнить. Ищем заголовок рецепта. У меня он выглядит так:
<h2 class="title entry-title"><?php the_title(); ?></h2>
Шаблон у меня старенький и там по-моему мнению прописано много лишнего, поэтому у Вас код заголовка может иметь иной вид, но смысл должен быть понятен. Нам надо вставить в тег h2 такую строчку:
itemprop="name"
Вот что должно получится:
<h2 itemprop="name" class="title entry-title"><?php the_title(); ?></h2>
Смотрим валидатор:
Ага, появился заголовок блюда и исчезла одна ошибка. Идем дальше А дальше дело пойдет посложнее, так как нам надо будет разметить ингредиенты, входящие в блюдо и инструкцию по приготовлению. Начнем с ингредиентов. Обычно у всех и у меня в частности, ингредиенты заключены в элементы списка, который выглядит следующим образом:
<ol> <li>Капуста</li> <li>Марковка</li> <li>Картошка</li> </ol>
Наша задача заключается в том, чтобы в каждый элемент списка <li> добавить разметку. Должно получится так:
<ol> <li itemprop="ingredients">Капуста</li> <li itemprop="ingredients">Марковка</li> <li itemprop="ingredients">Картошка</li> </ol>
Делать это каждый раз вручную — дело неблагодарное, поэтому мы призовем на помощь PHP. Я написал небольшую функцию, которая сделает это за нас, причем исправит все старые рецепты и будет исправно работать с новыми.
Открываем файл functions.php и в самое начало, после тега <php вставляем следующую функцию:
function mayak_ingredients($content) { global $post; $pattern = "<li"; $replacement = '<li itemprop="ingredients"'; $content = str_replace($pattern, $replacement, $content); return $content; } add_filter('the_content', 'mayak_ingredients');
Бежим к валидатору:
Вот они все ингредиенты с моего подопытного рецепта и теперь осталась всего одна ошибка и на эту ошибку я потратил больше всего времени.
Все в тот же файл functions.php вставляем следующий код:
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. Кто автор рецепта?
Момент №2. Каким образом изображения попадут в поиск?
Да уж мороки с этой микроразметкой, ведь жили же без нее как-то раньше и ничего и вообще кто ее придумал… Ну да ладно, начнем с автора рецепта. Открываем файл single.php и ищем такой код:
<?php the_author() ?>
Теперь на надо обернуть этот код тегами span, и добавить элемент микроразметки описывающий автора:
itemprop="author"
В общем выглядеть должно так:
<span itemprop="author"><?php the_author() ?></span>
Что скажет валидатор:
Итак, мы переходим к последнему этапу микроразметки страницы рецепта — это изображения. Допустим у нас есть код изображения, неважно, приведу для примера такой:
<img class="aligncenter size-full wp-image-3318" title="Mясной рулет с яйцом" src="http://DomMenu.ru/wp-content/uploads//2013/02/myasnoi-rulet-s-yaicom.jpg" alt="myasnoi rulet s yaicom" width="500" height="375"/>
Что нам надо сделать? Нам надо в каждое изображение добавить вот такой элемент микроразметки:
itemprop="image"
Я как-то прочитал на одном блоге, веб-мастерица привела целую фото-инструкцию как добавлять микроразметку в картинки. Естественно вручную.
Да уж, многие лучше вообще откажутся от этой злополучной микроразметки, чем корпеть днями, вставляя ненавистные элементы. Нет мы этим точно заниматься не будем, а лучше еще раз помучаем файл 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');
После чего, во все изображения какие были на блоге и какие будут, микроразметка внедриться сама. Проверяем результат на валидаторе. Вуаля:
Скриншот пришлось обрезать, чтобы он не занял всю страницу, так как изображений в моем рецепте довольно много. Ну вот с микроразметкой страниц с рецептами мы закончили, теперь пора вернутся к бесчисленному количеству предупреждений, которые выдал нам валидатор в самом начале.
Теперь разметим первое изображение в рецепте, которое должно отображаться в сниппете. Для этого внедрим, вернее поменяем в коде атрибут: itemprop='image' на itemprop='resultPhoto'.
В этом нам поможет простенькая функция:
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');
Осталось разметить зону комментариев. Приступим!
Микроразметка комментариев
Здесь я не стану подробно расписывать все задействованные элементы микроразметки, так как будет слишком долго. Мы просто возьмем и исправим все оставшиеся ошибки несколькими движениями. Напомню как выглядели предупреждения в валидаторе:
Опять разработчики WordPress накосячили, а люди месяцами греют себе мозги пытаясь найти ответы. Ну да ладно я тоже был среди этих людей и из общей массы веб-мастеров себе не выделяю, все мы «одной крови».
Поэтому я предлагаю миру лекарство, которое излечит Ваш сайт от этих предупреждений. Открываем многострадальный файл functions.php и вставляем в самый конец, ПОСЛЕ закрывающего тега ?> следующую не маленькую функцию:
<?php /*** Микроразметка в комментариях ***/ function mayak_comment($comment, $args, $depth){ $GLOBALS['comment'] = $comment; if ( 'div' == $args['style'] ) { $tag = 'div'; $add_below = 'comment'; } else { $tag = 'li'; $add_below = 'div-comment'; } ?> <<?php echo $tag; ?> <?php comment_class( empty( $args['has_children'] ) ? '' : 'parent' ); ?> id="comment-<?php comment_ID(); ?>"> <?php if ( 'div' != $args['style'] ) : ?> <div id="div-comment-<?php comment_ID(); ?>" class="comment-body"> <?php endif; ?> <div class="comment-author"> <?php if ( 0 != $args['avatar_size'] ) echo get_avatar( $comment, $args['avatar_size'] ); ?> </div> <div itemprop="comment" itemscope="itemscope" itemtype="http://schema.org/Comment"> <?php printf( __('<div itemprop="creator">%s:</div>' ), get_comment_author_link() ); ?> <?php if ( '0' == $comment->comment_approved ) : ?> <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ) ?></em> <br /> <?php endif; ?> <div class="comment-meta commentmetadata" itemprop="datePublished"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID, $args ) ); ?>"> <?php /* translators: 1: date, 2: time */ printf( __( '%1$s' ), get_comment_date('Y-m-d')); ?></a><?php edit_comment_link( __( '(Edit)' ), ' ', '' ); ?> </div> <span itemprop="text"><?php comment_text( get_comment_id(), array_merge( $args, array( 'add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?></span> <div class="reply"> <?php comment_reply_link( array_merge( $args, array( 'add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> </div> </div> <?php if ( 'div' != $args['style'] ) : ?> </div> <?php endif; ?> <?php } ?>
После чего открываем файл comments.php и ищем там такой код:
<?php wp_list_comments(); ?>
И в скобки вставляем следующее:
'callback=mayak_comment'
Если в скобках уже был какой-то код, то просто добавляем в конец через знак «&». В общем может быть так:
<?php wp_list_comments('callback=mayak_comment'); ?>
или так:
<?php wp_list_comments(' type=comment&avatar_size=48&callback=mayak_comment' ); ?>
Идем проверять на валидаторе:
Больше никаких предупреждений, но остался один штрих. В том же файле comments.php ищем такую строчку:
<h3 id="comments">Комментариев к записи: <?php comments_number('Нет', '1', '%' );?></h3>
У вас она может отличатся, но функция comments_numbe() везде одна. К тегу заголовка добавляем следующий элемент микроразметки:
itemprop="commentCount"
Должно получиться так:
<h3 id="comments"> Комментариев к записи: <span itemprop="commentCount"> <?php comments_number('Нет', '1', '%' );?></span></h3>
И что это нам дало? А вот что:
Ну вот наверное и все! Кстати, микроразметку также можно проверить на валидаторе Google. Данная статья я думаю будет полезна не только веб-мастерам, ведущим кулинарные блоги, но и многим другим. Если что непонятно, спрашивайте в комментариях.
Вышла в свет свежая статья: Гугл, Яндекс и обновление микроразметки Schema.org.
До встречи!
С уважением, Виталий Кириллов
Привет, Виталий!
Микроразметка, судя по вниманию к ней сейчас в инете, очень важна. Пробую разбираться. Но пока что не получилось разобраться даже с шапкой сайта 🙂
Информацию отправил письмом — возможно, я что-то не то делаю?
Элемент разметки нужно вставлять до тега header или после него?
Александр, честное слово, сейчас буквально на минутку домой забежал, буду посвободней мы с Вами обязательно во всем разберемся. В принципе, сложно только на первый взгляд.
Ух, так и не смог осилить. Вроде бы все просто, но когда начинаешь делать, появляются нюансы конкретной темы вордпресс. Пока оставим эту затею.Решил остановиться на Вашей схеме RDF разметки.
Виталик, мой опыт показывет, что не получается с первого раза, обязательно получится с третьего. Вернитесь к теме микроразметки немного позже.
Может и так. Хотя для моего шаблона подошла бы полностью и RDF разметка. Пока ей и пользуюсь. Делала по Вашей инструкции.
Виталий, спасибо за подробную статью по микроразметке! Все понятно и доступно. Но есть пару вопросов по внедрению микроразметки в шаблон Striking (на другом своем блоге, с простой, бесплатной темой все получилось с первого разу, благодаря Вашим рекомендациям, а вот Striking как-то не могу осилить). Можно ли связаться с Вами по этому поводу? Заранее благодарен.
Сергей, просто напишите мне через форму обратной связи!
Админ, как вы сделали плавающий баннер с социальными кнопками?
Скоро выпущу статью на эту тему.
Функция для изображений, работает, а вот сама мениатюра поста не отображаеться в разметке, только те картинки которые вложены как медиафайлы, как же можно сделать для миниатюр?
Как-то так:
Спасибо, попробую, по идеи должно сработать.
Не нашел в свей теме MeetaTheme коды которые надо было менять
У меня проблема все таки с этим дискрипшином(( уже сделала как вы описали и все равно идти не хочет( еще и в хедере теперь вылазит…
А вот сами ошибки:
microdata
ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
itemType =
image = jcooks.in.ua/wp-content/uploads/DSC_0537-680×1024.jpg
headline = Julia’sCook
description = Пошаговые рецепты с фото. Рецепты на любой вкус и цвет! Надеюсь вам они помогут)
wpheader
ПРЕДУПРЕЖДЕНИЕ: не выполнено обязательное условие для острова «Статья» — обязательное поле description отсутствует
itemType = schema.org/WPHeader
Юлия, Вы сняли галочку в плагине All in One AEO Pack, в пункте «Use Schema.org Markup»?
да конечно сняла, все как вы написали
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<h1 itemprop="headline"><a href="<?php bloginfo('url'); ?>"><?php bloginfo('name'); ?></a></h1>
<h2 itemprop="description"><?php bloginfo('description');?></h2>
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>">
<link rel="pingback" href="<?php bloginfo('pingback_url');?>">
<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>">
<link rel="icon" href="favicon.ico" type="image/x-icon"/>
<?php wp_head(); ?>
</head>
<body>
<div id="wrapper" itemscope itemtype="
http://schema.org/WPHeader
">Юлия обратите внимания, что заголовок:
Находиться в не поля действия библиотеки
http://schema.org/WPHeader
, Можно прописать отдельный блок div, но так чтобы он покрывал весь файл.Спасибо за статью. Всё подробно и чётко. У меня выдаёт только такую ошибку:
microdata
ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
itemType =
Где именно эта ошибка понять не могу, всё вроде бы заполнено
Евгений, эта ошибка возникает при разметке тела статьи?
Да, похоже после внесения изменений. Попробую всё удалить и сделать заново.
Спасибо за подробное описание,
все сделано по вашим рекомендациям, но валидатор Яндекса все равно пишет:
»
vcard
ПРЕДУПРЕЖДЕНИЕ:кажется, ваша разметка hCard описывает не организацию (поля fn и org не совпадают). В данный момент такая разметка не поддерживается Яндексом
fn = Vika
n = Vika
url = …»
Vika, это предупреждение касается разметки комментариев. Внимательно проверьте код, где-то ошибка
Виталлий у вас нет такой услуги по микроразметки для сайтов?
Олег, я конечно могу взяться, но в данное время мне просто некогда.
Виталий, здравствуйте! Очень расположил Ваш дружелюбный тон. 🙂 Разрешите поприставать с вопросами? Разметку на сайте делала не я. Гугл пишет, что больше сотни ошибок. Хочу разобраться и исправить. Оказалось, удобнее начать с Яндекса. Есть там такие строки в ответе: «префикс article неизвестен валидатору, укажите его явно атрибутом prefix». Просто заменить слово article на слово prefix?
Кстати, вообще не пойму, откуда в шапке facebook взялся. Были социальные сети в настройках шаблона, но месяц, как все переделано.
И второе предупреждение разрешите целиком покажу:
ПРЕДУПРЕЖДЕНИЕ: поле
http://schema.org/query-input не определено в спецификации http://schema.org/SearchAction
@type = http://schema.org/SearchAction
http://schema.org/target
@id = http://lentorgspb.ru/?s={search_term}
http://schema.org/query-input
@value = required name=search_term
Что с этим делать, подскажете?
Надежда, таких предупреждений я еще не встречал) Надо разбираться с библиотекой вашей тематики, так сразу я не могу сказать в чем причина.
Виталий, нашла, откуда первое предупреждение. Эту ошибку дает плагин Yoast WordPress SEO в интеграции с социальными сетями. Не пойму, почему только от фейсбука ссылка должна быть с протоколом, а остальные просто урлы. Где-то здесь собака зарыта. Или лучше вообще стереть эту информацию о социальных сетях. Спасибо Вам за уделенное время!
Это предупреждение происходит из-за All in SEO Pack, а как его исправить — только в самом плагине нужно копать. У меня та же проблема.
Надо убрать галочку в пункте «Использовать разметку Schema.org».
Здравствуйте.
Подскажите пожалуйста как решить такую проблему:
Я делаю микроразметку к комментариям. Вставляю в functions.php код из вашей статьи. А когда делаю следующий шаг и добавляю в скобки строку, то у меня появляется белое поле и все.
В чем может быть ошибка?
Прошу прощения. Дело не в коде. А в чем то другом. После сегодняшней пляски с микроразметкой у меня при нажатии на кнопку «Обновить» в редакторе появляется белое поле и приходится нажимать на обновление адреса в строке браузера 🙁
Светлана, надеюсь в делали резервные копии файлов.
Да, конечно 🙂
Добрый день
Я добавляла разметку к рецептам через произвольную запись (только одна рубрика с рецептами)
А можно эту функцию привязать к категории или к заголовку, например, начинающемуся на слово «Рецепт»?
Анастасия, какую функцию?
Эту функцию, из статьи =)
function mayak_ingredients и тд
Функция function mayak_ingredients размечает ингредиенты и не может применяться к категориям.
Я имею в виду, размечать ингредиенты только в записях из определенной категории
Вообще-то можно, но для этого надо создать отдельный шаблон для категории и разметить его. Но функции будут работать все равно для всего сайта, поэтому те же ингредиенты придется размечать вручную в редакторе WordPress.
Хорошая статья, но у меня не всё получилось:( Со своей проблемой обратился к Вам через форму обратной связи. Можете мне помочь? Спасибо
Интересно если к комментариям к полю «Сайт» добавить itemprop=»url» , для того чтобы выделить ссылки авторов, если они закрыты от индексации они будут в индекс попадать?
Денис, ничего индексироваться не будет, не прореживайте.
Ага, спасибо за ответ, может поставлю, незнаю только нужно это или нет )))
А как сделать url для страници с постом, в шаблоне одной записи, там же нет атрибута ссылки ?)
Не понял!
Указать в разметке url страницы с постом itemprop=»url» прописать нужно, а вот как это сделать, ведь в файле шаблона одной записи нету функции адреса странице.
Здравствуйте, Виталий!
Мне ваша статья очень хорошо помогла при разметке моего сайта (не кулинарного), особенно функции, которые вы даете в статье, вот они особенно, так как без них у меня многое бы не получилось.
Правда вместо
itemscope itemtype="
http://schema.org/WPHeader
"я указала
itemscope itemtype="
;http://schema.org/Blog
"т.к. у меня блог, поэтому решила попробовать указать Blog, а Вы как считаете: Blog целесообразно указывать?
Здравствуйте Мария!
Думаю тут каждый вправе выбирать на свое усмотрение.
Спасибо огромное. Случайно наткнулся на ваш блог, рад несказанно. Столько инфы нужной, не раздумывая подписался на обновления.
Рад Видеть Вас, Сергей!
Здравствуйте, Виталий! Начал внедрять микроразметку по Вашей статье. Сделал шапку сайта — по валидатору яндекса ошибок нет. Решил проверить главную страницу с помощью W3C валидатора — оказалось, что появились ошибки. Не подскажете в чем причина?
Точно сказать не могу, Возможно валидатор W3C еще не адаптирован под микроразметку.
Виталий, спасибо за код микроразметки комментариев. Все получилось настроить с первого раза на бесплатном шаблоне.
Здравствуйте, Виталий. Пробую делать микроразметку для блога. В вашей статье я не нашла, как удалить старую разметку. Или, может быть, у Вас есть отдельная статья? Помогите, плиз. А может, Вы оказываете такие услуги (установить микроразметку Schema)? Как раз у меня кулинарный блог.
Здравствуйте Наталья! У меня сейчас просто нет времени, поэтому взяться не могу.
А может тогда подскажите, как старую разметку удалить?
Вы имеете в виду vcard?
Выскакивает вот что
rdfanode
ОШИБКА: префикс article неизвестен валидатору, укажите его явно атрибутом prefix
Где найти rdfanode и т.д. Открываю страницу в коде нахожу только vcard, но в файлах php найти никак не могу через CTRL+F
Наталья, я не стал публиковать Ваш комментарий полностью.
rdfanode — это микроразметка, которая используются в хлебных крошках и удалять ее не надо.
Другое дело vcard. Данной разметкой в WordPress размечены комментарии. В конце статьи я привел функцию, которая заменяет разметку в комментариях c vcard на schema.org.
Спасибо. Попробую поколдовать над кодом.
Виталий, а Вы не подскажите, как задать условие подобной функции:
function mayak_ingredients($content) {
global $post;
$pattern = «<li";
$replacement = '<li itemprop="ingredients"';
$content = str_replace($pattern, $replacement, $content);
return $content;
}
add_filter('the_content', 'mayak_ingredients');
Что бы она работал только в определенном, индивидуальном шаблоне записей?
Или придется создавать custom post type…?
С ходу не могу сказать.
А если уже есть custom post type, как использовать код внедрения itemprop=»»?
Здравствуйте, Виталий! Спасибо за статью, потрясающе! а за функцию автоматической разметки картинок отдельный респект, все сделала, все получилось, один маленький ньюанс остался в валидаторе гугл вот такую ошибку показывает
Ошибка. Missing required hCard «author».
А в Яндексе все ок.
Нашла вот такой вариант
<span class="vcard author">
<span class="fn"><?php the_author_posts_link(); ?></span>
</span>
Но тогда ошибку пишет уже Яндекс «ПРЕДУПРЕЖДЕНИЕ:кажется, ваша разметка hCard описывает не организацию (поля fn и org не совпадают). В данный момент такая разметка не поддерживается Яндексом».
Подскажите, пожалуйста, как исправить.
Юлия, эта ошибка выскакивает в зоне комментариев?
Виталий, нет ошибка в первой части разметки
hatom-feed
hatom-entry:
entry-title: Пирог бездрожжевой с капустой
updated: 2014-04-28 Бочарова Юлия
bookmark:
name: Икра из запеченных баклажанов
rel: bookmark
url:
http://bo4ariki.ru/zakuski/ikra-iz-zapechennyx-baklazhanov
tags:
name: Просмотреть все записи в рубрике «Выпечка»
rel: tag
url:
http://bo4ariki.ru/vypechka
Ошибка. Missing required hCard «author».
Юлия, а где у Вас строчка «author»?
Наверное должно быть так:
author = автор: Бочарова Юлия
И вообще я не использовал микроразметку hcard, зачем Вам она?
Я честно говоря ее и не использовала, ведь hcard используют для разметки адреса и.т.п. различных организаций, а какой физический адрес у кулинарного блога? Не пойму, почему валидатор гугл упорно ее от меня требует…
Виталий! Я только что ввела страницу Вашего кулинарного сайта в валидатор и показывает ту же ошибку, что и у меня. Смотрите сами, вводила вот эту http://dommenu.ru/salat-serdce.html
Юлия, все правильно, у меня эта ошибка присутствует, но дело в том, что Яндекс, в отличии от Гугла, не поддерживает разметку vcard и поэтому выдает ошибку. Я выбрал schema.org и на эту ошибку не обращаю внимания.
Да нет, тут как-то можно сделать чтобы и нашим и вашим. Вот, как пример блог Борисова isif-life.ru использована разметка schema.org, а микроразметка валидна и в гугл и в яндекс и таких блогов много. Вот голову ломаю и понять не могу, как подправить код, чтобы угодить обоим)
Да Юля, Яндекс не поддерживает vcard, поэтому народ и использует schema.org и RDF. Кстати на сайте, что Вы мне привели в пример, vcard и не пахнет, поэтому там и ошибки нет. Посмотрите внимательно.
А теперь по сути вопроса. Все Ваши мучения связанны с функцией post_class(), что находится в файлах index.php, single.php возможно и др. Данная функция выводит в исходный код страницы Вашего сайта такую строчку:
Все дело в одном слове — hentry, которое включает одноименную библиотеку vcard и говорит Гуглу, что здесь применена данная микроразметка.
Надо удалить эту функцию, также возможно еще придется подправить стили страницы, так как к post_class() частенько привязывают CSS. Поэтому вместо функции post_class() пропишите:
И еще уберите из файлов следующие классы, если они есть:
Успехов!
Спасибо большое за разъяснения и за такой развернутый ответ, буду пытаться внедрить.
Здравствуйте, Виталий! Пробовала переименовать post_class()в class=»post», эти строки были в файлах index.php и single.php- в итоге пропали все записи на главной и в рубриках, просто шапка сайта и белый лист.
Хотела у Вас спросить, микроразметка привязывается к шаблону, ведь мы вносим изменения в файлы шаблона?
А если это так, то почему я устанавливаю другой шаблон (взяла с другого своего блога, там микроразметки вообще никакой нет и гугл и яндекс показывает, что микроразметки нет и ошибок тоже никаких нет, т.е. чистый шаблон без следов микроразметки)установила его на bo4ariki.ru и опять показывает эти ошибки hcard! Как же так, значит оно где-то не в файлах шаблона спряталось?
Здравствуйте Юлия. Вы видимо не знаете, как работают функции, поэтому у Вас и рушится сайт. Давайте пошагово:
Шаг №1:
Находим и удаляем функцию post_class(), которая являться тегом шаблона и в файлах выглядит следующим образом:
Удаляем указанный код полностью.
Шаг № 2:
В блок div, в теле которого располагалась функция post_class() дописываем класс post:
Юля правильно удалите функцию post_class() и все проблемы закончатся.
Виталий, здравствуйте! Спасибо за статью. Подскажите пожалуйста, есть ли в Schema.org подраздел аналогичный Рецептам?
У меня рукодельный блог, на котором так же как и на кулинарном идут сначала «ингридиенты» в качестве необходимых инструментов и приспособлений для работы, потом детальное описание изготовления с пошаговыми фотографиями.
Я бы хотела (если возможно, конечно) сделать такую же детальную разметку как для кулинарных сайтов, но только у меня ведь не рецепты 🙁
Я так понимаю, если я у себя разметку для рецептов внедрю, то это ведь не правильно?
Есть что-то похожее? Не смогла сама разобраться как там эти категории искать.
Спасибо большое заранее.
Татьяна, вот как вариант, почитайте
help.yandex.ru/webmaster/supported-schemas/other-content.xml
Ага. 🙂 Спасибо большое.
Спасибо большое, Виталий! Все получилось! Мучениям конец!
А вот еще задачка. На блоге есть просто статьи, а есть рецепты. Как их разметить?
Думаю,что для этого надо создавать отдельные шаблоны для таких записей.
Виталий, подскажите,пожалуйста, а для главной страницы блога (index.php) нужно делать разметку?
Юлия, я думаю для главной страницы будет достаточно микроразметки в шапке сайта, хотя каждый волен сам решать.
До разметки ингредиентов все получилось. А вот дальше… Ингредиенты у меня заключены в другой тег. Поменял тег в предложенном вами файле для functions.php , но валидатор не видит ингредиентов. Поменял в одном рецепте теги ингредиентов, сделал, как у вас в статье. Результат без изменений. В чем может быть причина?
Не могу сказать. Где-то ошибка.
Забыл написать, что валидатор гугла все видит правильно, а у яндекса ничего нет.
А я уже 3-й час ковыряю микроразметку, могу посоветовать всем новичкам, никогда не берите шаблон Twenty fourteen, потому как в нём всё запутано, и ни один из этих примеров не поможет. Придётся долго копаться в файлах, а если ваши познания хромают в программировании, то сделать это будет очень сложно.
Здравствуйте, а почему надо снять галочку в пункте «Use Schema.org Markup» в плагине All in One SEO Pack? Я так понимаю, что эта галочка как раз указывает плагину на то, чтобы он использовал микроразметку Schema.org. Разве нет?
Здравствуйте! Дело дело в том, что плагин расставляет разметку не полностью, а только отдельные элементы. В общем валидатор выдаст вам кучу ошибок.
Видимо, завалю я Вас вопросами, Виталий).
У меня Header.php выглядит так:
<a href="/»>
Я правильно вставила код?
</head>
<body>
<div id="art-main"itemscope itemtype="
http://schema.org/WPHeader
">
<div class="art-Sheet">
<div class="art-Sheet-tl"></div>
<div class="art-Sheet-tr"></div>
<div class="art-Sheet-bl"></div>
<div class="art-Sheet-br"></div>
<div class="art-Sheet-tc"></div>
<div class="art-Sheet-bc"></div>
<div class="art-Sheet-cl"></div>
<div class="art-Sheet-cr"></div>
<div class="art-Sheet-cc"></div>
<div class="art-Sheet-body">
<div class="art-Header">
<div class="art-Header-jpeg"></div>
<div class="art-Logo">
<h1 id="name-text" class="art-Logo-name">
<a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
<div id="slogan-text" class="art-Logo-text">
<?php bloginfo('description'); ?></div>
</div>
У меня bloginfo description выглядит так:
<div class="art-Header">
<div class="art-Header-jpeg"></div>
<div class="art-Logo">
<h1 id="name-text" class="art-Logo-name">
<a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>
<div id="slogan-text" class="art-Logo-text">
<?php bloginfo('description'); ?></div>
</div>
Прямо перед ним нет тега , куда вставлять код? Перепробовала все возможные места), но в валидаторе Яндекса описания не появляется. Подскажите, пожалуйста, куда вставить код.
Мария, я сталкивался с подобными шаблонами как у Вас и что-либо в них изменить очень не просто.
В конце концов, я сделала вот так:
<div class="art-Header">
<div class="art-Header-jpeg"></div>
<div class="art-Logo">
<h1 id="name-text" class="art-Logo-name">
<a href="<?php echo get_option('home'); ?>/><?php bloginfo('name'); ?></a></h1>
<div id="slogan-text" class="art-Logo-text">
<h2 itemprop="description"><?php bloginfo('description');?></h2>
</div>
И вот, что пишет валидатор Яндекса: description =
Мария, боюсь Вы сами не справитесь с микоразметкой, так как данная задача требует некоторых знаний. Я не могу разбираться с каждым шаблоном, поэтому советую обратиться к специалисту.
«И вот, что пишет валидатор Яндекса: description =»
Возможно у вас нет описания сайта в заголовке. Пройдите по адресу: Внешний вид- Заголовок и проверьте, скорей всего у вас там пустое поле.
Спасибо.
Статью и комментарии разметить получилось, а от главную страницу показывает только:
wpheader
itemType =
http://schema.org/WPHeader
image
href =
http://quilling-life.com/wp-content/uploads/2014/11/IMG_2.jpg
text = Квиллинг
Нет описания главной. Это нормально?
Екатерина, описание главной страницы — это описание сайта и оно должно быть.
в header.php прописала
в коде описание есть
Но яндекс не видит эту разметку описания. Почему так может быть?
Екатерина, значит что-то не правильно. Валидатор не ошибается.
И еще от:
microdata
ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
itemType =
image =
Эта ошибка появляется после вставки кода для разметки картинок в functions.php
Микроразметка вещь не простая и требует некоторых знаний. В каждом случаи надо разбираться в отдельности. У меня к сожелению не хватит времени помочь всем желающим.
Здравствуйте. У меня почему-то валидатор гугла все видит, нет никаких ошибок. Яндекс же не видит разметку ингредиентов и описание приготовления. Как так, у гугла есть, а у яндекса нет.
Значит где-то ошибка.
Здравствуйте Виталий! понравилась Ваша статья, тоже веду кулинарный блог и возникли вопросы по ходу пьесы так сказать)
если ингредиенты написаны без списка Li как поступить?
function mayak_image что значит mayak?
можно переразметить только картинки для выдачи их в снипете?
Здравствуйте Константин!
1. Вы давно смотрели выдачу Яндекса? Полюбопытствуйте. Фотки из снипетов убрали.
2. А что значит image? )
Здравствуйте. У меня значение headline такое же, как и description. Подскажите пожалуйста, как и где его можно поменять?
Админка -> Настройки -> Общие -> Краткое описание
Спасибо!
Ранее на своем кулинарном блоге я использовала плагин hRecipe, сейчас он почему то перестал работать, я его деактивировала и сделала разметку как описано в вашем посте, так теперь валидатор яндекса мои новые посты с рецептами, которые писались без плагина видит нормально, именно так как описано у вас, а вот старые посты, которые я писала с использованием плагина hRecipe, валидатор размечает дважды, т.е. первый раз идет разметка как у вас, а следом за ней разметка с использованием плагина.(при этом плагин деактивирован). Ошибок валидатор не выдает. Посоветуйте пожалуйста чем чревата такая двойственность и как ее возможно убрать?
Олеся, двойственность ничего хорошего не сулит, лучше тогда вообще без разметки. Некоторые плагины очень сложно удалить полностью, трудно найти все их корешки. С hRecipe я не знаком и мне сложно сказать наверняка. Думаю, что в базе данных плагином была создана отдельная таблица, проверьте.
Виталий, подскажите мне с разметкой. Гугл выдает hatom-feed и
hatom-entry, которые я хочу убрать. На сайте за эту разметку отвечает блок:
<article id="post" >
При его редактировании картинки перестают отображаться. Как его удалить?
Den, а файл post.php в шаблоне есть?
Нету. За вывод этого блока отвечает файл content-single.php.Но еще есть single.php, который как я понял, вызывает header, сайдбара, блок комментов и футер.
Den, и что там в файле content-single.php?
Вот такая строка
article id=»post» class=»post-6990 post type-post status-publish format-standard hentry category-armrestling-texnika entry content entry_left
Den, воспользуйтесь преобразователем, чтобы более четко отобразить код. Я думаю именно здесь собака зарыта.
Что такое преобразователь?
Над формой комментирования есть кнопочка открыть преобразователь. Пропустите через него код и вставьте в комментарий.
Преобразователь изменяет код. Выдает ерунду. Как убрать эту строку, чтобы изображения показывались, я понял. Проблема в том, что выводил картинки через шорт-код и там не было «<img src…, а было [img …
Теперь я вручную изменяю шорт-коды на нормальный html код. Печаль)
При замене все работает и hentry нет.
скорее всего плагин hRecipe не совместим с новой версией вордпресса, так как он уже давно не обновлялся (это мне сказали на моем хостинге). Придется удалять из каждого поста вручную остатки плагина.
Неплохо описано, но непонятно требование делать description более 250 символов, при том, что ПС считают в среднем около 70 символов. Надо постараться воткнуть ключи в начало текстовки.
Жаль, что для форумов нет подходящей микроразметки. Хотя часть инфы можно выдернуть для форума.
Какая ужасная статья! Я ее даже дочитать была не в состоянии, не то чтобы разобраться.Появляется желание вообще эти сайты бросить, так ведь втянулись, не оттащить. Где вы только научились всему этому?!
Терпение и труд все перетрут!
Отличный мануал. Автору спасибо большое.
Доброго времени суток.
Спасибо за статью.
Не понимаю, почему обновления в разметке можно отследить в лучшем случае на следующий день.
Кэш почистила в WP Super Cache, в браузере, пробовала отключать плагин.
Может, подскажете в чем может быть дело?
Здравствуйте Алена! Вы имеете в виду обновления исходного кода?
Разобралась с микроразметкой. Спасибо за подробную статью!
Спасибо за хорошую информацию. Я вот думал, что придется все теги вручную проставлять.
Не могли бы вы немного подправить код скрипта для вставки тегов в список или фото для сайтов на другом движке или просто на пхп.
Здравствуйте Денис! Для того, чтобы подправить что-то на другом движке надо знать функции, которые отвечают за вывод той или иной информации. С WordPress я знаком хорошо, хуже обстоят дела с другими CMS, поэтому однозначно на Ваш вопрос ответить не могу.
Целый день долбил searchengines? и вот решение найдено. Для тех у кого не wordpress:
$переменная, в которой находится список ингредиентов = str_replace (‘<li', '<li itemprop="ingredients"', $переменная, в которой находится список ингридиентов);
Код был мной поставлен прямо перед функцией printf
Виталий здравствуй! Как в комментариях оставить те стили что были раньше, а то имя и дата были напротив аватарки, а сейчас под аватаркой и еще появилось имя автора статьи около хлебных крошек? Спасибо за разметку.
Виталий здравствуйте! После вставки кода, для разметки комментариев, в файл functions.php пропал доступ к админ панели блога(экран стал белым). Пришлось через сервер удалять код и тогда доступ вернулся. Код у вас верно написан?
Евгений, php не терпит ошибок и если структура языка нарушена, то сайт не будет работать. История с белым экраном вполне типична для тех, кто только начал знакомство с php и я через это тоже проходил.
Конечно код правильный и удивительно, что Вам в первую очередь не пришла мысль о том, что Вы что-то сами не так сделали.
Скажите, Вы вставили функцию после php тега ?>, что находится в самом конце файла functions.php?
Еще одна распространенная ошибка заключается в следующем. Многие новички вставляют код в файл functions.php, что находится в папке wp-includes.
И еще, для работами с файлами на сервере, советую пользоваться FTP клиентом Notepad++, где есть функция «шаг назад».
Да, я ошибся и вставил код до закрытия функции, однако, когда все исправил, ошибка трансформировалась. Во-первых: после размещения самого кода в functions.php без редактирования в comments.php ничего не произошло, код был принят нормально. Далее, после того, как вставил ‘callback=mayak_comment’ в comments.php произошло вот что с сайтом, раздела комментарии:
savepic.su/4819911.png
сбился шаблон, пропала кнопка «ответить»Вот что при этом выдал валидатор микроразметки яндекса:
savepic.su/4838343.png
Ошибок размещения кодов при этом я делал и был внимателен.
Евгений все шаблоны разные и возможно у Вас уже подключена похожая функция, которая была внедрена разработчиками шаблона. Приведите мне полный код подключения функции в файле comments.php.
Сюда выложил код в файле:
Евгений я не стал публиковать ссылку, так как не стоит выкладывать файлы php для общего доступа.
Как я и ожидал, у Вас уже подключена функция, которая называется et_custom_comments_display и скорее всего живет в файле functions.php. Также к данной функции подключены свои стили, поэтому и происходит деформация зоны комментариев, когда вы вставляете мою функцию.
В общем Евгений, микроразметка не такая простая вещь и надо иметь хотя бы базовые знания в программировании, чтобы реализовывать это самостоятельно.
Виталий здравствуйте! Сделал все как Вы писали, но у меня почему-то отсутствует название блога в микроразметке шапке (headline=….), после равно отсутствует название моего блога. Подскажите, что не так сделал.
Ну наверное вы не разметили название, или сделали это с ошибкой. Мне трудно сказать не видя Ваших движений.
Виталий, подскажи пожалуйста, как сделать, чтобы краткое описание блога не отображалось в шапке самого блога.
Павел, встречный вопрос, а зачем его скрывать?
Виталий, я, как новичок, не совсем «в теме», как говорится. У меня два вопроса.
Для главной тег издателя подтвержден, зато беда с микроразметкой.
Яндекс: поле ingredients не определено в спецификации
schema.org/WPHeader
Гугл: Ошибка. Page contains property «ingredients» which is not part of the schema.
Действительно, они не понимают, что размещено на главной (последние записи)
Посмотрела другие кулинарные сайты. У них микроразметки на главной вообще нет, в большинстве случаев. Не поняла, почему. Я думаю, что нужно создать статическую главную страницу с соответствующей микроразметкой или есть другой вариант?
Второй вопрос: есть смысл размещать тег издателя в каждой записи? У меня в записях тег издателя не подтвержден
Алена, дело в том, что у Вас ingredients попадают в анонсы рецептов, которые отображаются на главной странице, от этого и ошибка. Переставьте тег more так, чтобы ingredients отображались только в теле самого рецепта. На всякий случай еще раз скажу. На главной странице, размечается только шапка!
Спасибо за ответ Виталий.
Тэги переставлю. С остальным разберусь позже
Добрый день! Подумывал использовать микроразметку на своём кулинарном сайте, нашёл Вашу статью. А потом посмотрел выдачу и возникло ощущение, что Яндекс убрал расширенные сниппеты для рецептов. Так ли это? И имеет ли смысл использовать микроразметку рецептов для Яндекса сейчас? Заранее благодарю.
Здравствуйте Петр! Яндекс дайствительно убрал расширенные снипеты, но микроразметку есть смысл использовать в любом случаи.
Здравствуйте. По поводу правки микроразметки комментариев. У меня вот такой код — wp_list_comments( array( ‘callback’ => ‘ashford_comment’ ) );
Подскажите, как правильно вставить ваш код — callback=mayak_comment
Вставлял по разному и получал 2 эффекта: либо комментарии все удалялись вместе с формой. Либо комментарии удалялись, но форма для новых комментариев была.
Здравствуйте Дмитрий! Ван надо просто заменить ashford_comment на mayak_comment. В общем функция может выглядеть так:
Или так:
Дело в том, что в вашем шаблоне, разработчики прописали свою функцию вывода комментариев ashford_comment и в ней заданны css классы, поэтому и происходит деформация зоны комментариев, когда вы пытаетесь прицепить мою функцию. Тут надо или новые стили задавать или переподчинить уже имеющиеся.
Также есть возможность перенести микроразметку на функцию ashford_comment.
Попробовал. Вроде сработало. Была проблема с датой небольшая. Пока её не пробовал устронить. Так же стили немного поменялись. Вы хорошо разбираетесь с микроразметкой. Может сможете перенести её на мою функцию или стили переподчинить, чтобы валидатор не показывал ошибки и стили оформления сохранились. Например, за денюжку. А то я не силён в этом. Буду ковыряться целый день)
Дмитрий, напишите мне через форму обратной связи, обсудим.
Виталий, не подскажите как в поиске убрать дату публикации. Но в тоже время оставить код itemprop=»datePublished» в микроразметке сайта.
Андрей, если убрать дату публикации из микроразметки, то валидатор будет выдавать ошибку.
Виталий, а для вордпресс не решает ли проблему валидной разметки плагин schema creator settings?
Мария, валидность вещь очень тонкая! Что не валидно для XHTML 1.0 Transitional, вполне валидно для XHTML 1.1. Насчет плагина не знаю, попробуйте.
СОгласна с вами Сергей, но может какая то общая схема, например «Как прокачать WP для поисковиков оптимально, быстро, просто»
А моя неблондинистая голова и взорваться может 😀
Виталий здравствуйте. Подскажите пожалуйста: У меня строка вывода коммента вот такая:
<?php wp_list_comments('type=all&callback=art_comment'); ?>
Я добавляю callback=mayak_comment
И получается вот так
<?php wp_list_comments('type=all&callback=art_comment&callback=mayak_comment'); ?>
Но после этой манипуляции комментарий на заднем плане шаблона.
Если прописываю <?php wp_list_comments('callback=mayak_comment'); ?> Яндекс ругается: «vcard ПРЕДУПРЕЖДЕНИЕ: кажется, ваша разметка hCard описывает не организацию (поля fn и org не совпадают). В данный момент такая разметка не поддерживается Яндексом»
Что делать?
Здравствуйте Роман! Прежде чем прописывать вызов функции <?php wp_list_comments('callback=mayak_comment'); ?>, надо вставить саму функцию в файл functions.php. Надеюсь вы это сделали?
Конечно сделал.
Мне трудно давать советы в слепую, но что моя функция прошла все валидаторы — факт! Ищите, где-то ошибка! Если не найдете, пишите в личку, на платной основе поищем вместе.
А может быть проблемма через два «callback»? т.к. проблемма только в этой строке.
Кстати проблемма на 2-х разных сайтах с разными шаблонами.
Роман, php довольно не простой язык и проблемы у новичков возникают всегда, но это не значит, что моя функция не работает)
Два callback быть не должно, подключаться может только одна функция.
Виталий, подскажите еще пожалуйста, если у меня теги выступают ингредиентами — как правильно код поправить ?
Роман, я не понял, что значит теги выступают ингредиентами?
Ну на одном из сайтов у меня много материалов и ингредиенты не прописаны через , но они прописаны как теги (метки).
Есть идеи, или вы дальше не понимаете суть вопроса ?))
Роман, идеи должны быть у Вас а не у меня!
Виталий, извините но я слаб в этом деле. Я хочу что-бы вы подсказали что в этом коде
function mayak_text_description($content){
return $content. '</span>';}
function mayak_recipeInstructions($the_content) {
global $post;
$the_content=preg_replace('#<h3(.*?)</h3>#','<h3\1</h3><span itemprop="recipeInstructions">',$the_content);
return $the_content;}
add_filter('the_content', 'mayak_recipeInstructions');
add_filter('the_content', 'mayak_text_description');
Нужно поменять чтобы выводились ингредиенты не из <li> </li> а из меток. Спасибо.
Роман, а вы функции не попутали? Совет, заплатите деньги специалисту (я говорю не про себя) и не мучайтесь или просто откажитесь от данной затеи до тех пор, пока не наберетесь знаний.
Да, действительно — я имел в виду этот код
function mayak_ingredients($content) {
global $post;
$pattern = "<li";
$replacement = '<li itemprop="ingredients"';
$content = str_replace($pattern, $replacement, $content);
return $content;
}
add_filter('the_content', 'mayak_ingredients');
Но думаю вы и так поняли. Там поменять нужно мелочь (я так думаю(несколько вариантов попробовал — не помогло)), но вижу вы не знаете? или просто не хотите сказать?
Роман, я действительно пока не знаю, надо проводить эксперименты, а не имею столько свободного времени на это, так как даже с платными заказами не успеваю… Надеюсь на Ваше понимание.
Доброго времени суток, Виталий.
С микроразметкой разобралась в конце января.
Сейчас случайно обнаружила, что картинки не соответствуют названию.
В валидаторе все ОК.
Изображения пришлось разметить для каждой записи, т.к. у меня стоит плагин вывода похожих записей.
Несколько дней на сайте стояла функция для микроразметки изображений и она выводила в сниппет фото последней похожей записи (это было в январе).
Что посоветуете? Думаю, для начала опубликовать посты со ссылками на эти записи в Твиттере и Сабскрайб.
Виталий, добрый день! Занимаюсь микроразметкой на своем сайте, пока разметил записи и страницы, но вот возник один вопрос: для внедрения микроразметки в дату публикации статьи обязательно нужно соблюдать формат времени «Y-m-d», просто у меня формат немного другой, есть ли варианты решения этого вопроса?
Здравствуйте Евгений! Формат времени придется сменить, иначе валидатор будет выдавать ошибку.
А у меня при внедрении кода «recipeInstructions» не отображается. Да и если код не приписывать валидатор ошибки не выдает. В чем проблемма ?
Виталий, спасибо! Описано просто и понятно. Раньше я выборочно в сами записи вставляла разметку, но этот вариант реально лучше. Единственное я вручную в рецепте еще указывала итоговую фотографию, с помощью itemprop=»resultPhoto».
Можно ли это внедрить как-то с помощью кода. К примеру чтобы первая фотография в рецепте помечалась как resultPhoto?
Swetlana, думаю можно но с ходу конечно не могу вам выдать функцию. Вы наверное понимаете, что я не могу писать функции под каждого.
Может можно как то плагином решить вопрос микроразметки? А то уж очень сложно
Надежда, плагин какой-то есть, но он не уберет все ошибки в валидаторе, да и неудобный он.
Здравствуйте! Скажите, актуальна ли ваша инструкция сейчас для того чтобы на моем кулинарном блоге на WP в выдаче яндекса отображались фото рецептов?
Здравствуйте Андрей! В Яндексе сейчас отображается всего одна фотка с рецепта. Да, инструкция актуальна!
как тут с разметкой автора быть подскажите пжста
<?php
$get_author_bio = get_theme_option('author_bio_on'); if($get_author_bio == 'Enable'):
get_template_part( 'lib/templates/author-bio' );
endif
?>
Надежда, прежде всего прочитайте мою статью про функцию get_template_part(). Если останутся вопросы, буду готов выслушать.
Здравствуйте, Виталий. Спасибо, что отвечали на мои вопросы, у меня кажется все получилось, если нетрудно, посмотрите, оцените так сказать, может быть еще что-то надо сделать, наверно вы заняты
Сделал все по вашей инструкции, все получилось с первого раза)))), круто!!!
Но возник вопрос по фото, в яндексе сейчас отображается только одно фото, у вас в инструкции написана функция как сделать чтобы ко всем фото добавилась разметка itemprop=»image», скажите при такой разметке яндекс будет брать первую фотку и показывать ее в сниппете или к первой фото нужно обязательно добавить resultPhoto?
По сути ведь не нужно размечать все фото, а добавить resultPhoto только к первой, остальные ведь в расширенном сниппете не отображаются. У вас есть какая-то функция для добавления resultPhoto ко всем первым фото всех рецептов?
Еще скажите а эта разметка и для гугла работает?
Блог однозначно в закладки, стока крутой инфы)
Андрей itemprop=»image» будет достаточно для вывода фото в сниппет. Для Гугла тоже должно работать.
Виталий, если к каждой фото добавить itemprop=»image», то какая из всех фото будет отображаться в сниппете?
И для чего тогда нужен resultPhoto если все и без него работает как вы говорите?
На моем кулинарном сайте dommenu.ru стоит разметка itemprop=»image» и фото в сниппете. Да я так говорю, но это не значит, что resultPhoto бесполезно. Если бы вы вежливо попросили, то возможно я бы привел функцию в ответе на комментарий, после того, как над ней поработал, а теперь, даже не знаю…
Посмотреть можно тут
Виталий я вам не грубил 🙂 и не хотел. Но если бы вы написали функцию, если конечно такое возможно то я был бы очень благодарен.
К сожелению в гугле не работает. Или может больше времени нужно ?
В Гугле 100% работает!
После того как сделала разметку посещаемость выросла на много -за 3 дня в 3 раза, до 1000 дошло, но потом опять снизилась до прежнего значения. Не знаю так должно быть или нет.
Возможно в праздничные дни была такая посещалка. Для того, чтобы разобраться в причинах скачка, думаю, надо больше времени.
Да, я так понимаю это связано с праздниками. У меня тоже посещаемость выросла в разы, а потом упала ниже чем была (((
Хорошая статья, я раньше этого и не знал
Огромное спасибо Вам за статью! Все замечательно работает!))
Только вот возник вопрос по поводу recipeInstructions. В написании функций к сожалению не разбираюсь(. В теле рецепта 2 тэга h2. Можно ли прописать функцию таким образом, чтобы recipeInstructions считывался после второго тэга h2?
Alina, а не проще теги поменять…
так в каждой статье придется менять) я их вручную проставляю, если б раньше знала, сделала бы один тэг h2))
Alina, дело в том, что все теги подзаголовков должны быть ниже по иерархической цепочке, чем заголовки записей. Лучше переделать!
Большое спасибо за совет, буду переделывать. И отдельное спасибо за скорость ответа) Очень приятный у вас блог, на который хочется возвращаться)
Здравствуйте, Виталий!
Я сменил шаблон и начал делать разметку, но почему то выходит такая ошибка:
…microdata
ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
itemType =
name = Диетическое куриное филе в духовке…
Не отражается
schema.org/Recipe
На этом шаблоне есть еще один сайт и там все в порядке он не кулинарный, но разметка в валидаторе отражается:
itemType =
schema.org/Article
name = Усть-Ленский государственный…
A файле single я просто заменил
schema.org/Article
наschema.org/Recipe
Результата нет ((((
Ошибка с микродатой обычно возникает из-за неправильного формата даты в микроразметке. Поддерживаемый формат выглядит так: (Y-m-d).
Не отражается schema.org/Recipe, хм, точно не могу сказать, но возможно надо поменять месторасположение библиотеки в файле single.
Уже все сделал, поставил в другой класс и проблема исчезла. Просто стало интересна почему другая разметка так работала, а это не нет.
Сейчас у меня появилась ошибка в яндексе
article ОШИБКА: В свойстве content тега meta не может содержаться ссылка
Как исправить ?
Так как решить ?
Уберите ссылку из meta content.
Приветствую! Василий, вот эта строчка в разметке комментариев:
….( ‘Your comment is awaiting moderation.’ )… Ее же лучше наверное на русский перевести?
Извиняюсь, Виталий.
Виталий, я пробовал по твоему коду разметку комментариев, ни фига не хочет работать. Все равно в Яндексе выдает ошибку vcard. Я даже переименовывал vcard в comment-template.php — бесполезно. У меня есть такая хрень как hentry, может из-за нее не получается? hentry отвечает за автора и дату статьи, но не комментариев, что-то странно…
Здравствуйте Янис! В исходном коде я не нашел элементы Schema.org в зоне комментариев, это значит что функция не была подключена или не работает, проверьте правильность подключения. Функция post_class(); тоже дает ошибку, об этом подробней здесь.
Я убрал ваш код — насчет комментариев! Почему убрал? В Гугле этот код показывал все норм — user comments вместо vcard, при этом hentry также присутствовало, а Яндексу пофиг — не отключает этот код vcard! Видел решение вопроса у М.Зайцева, тока там перед обновлением вордпресс надо скопировать. Ну это ерунда, вот буду пробовать…
Добрый день, Виталий. Идея с кодом комментариев хорошая. Я настроил всю микроразметку, кроме комментариев, но когда вставляю ваш код в функции, сносит весь блог. Пока не восстановишь файл функций. Почему это? Хотелось бы знать? Нельзя это как нибудь исправить? Заранее благодарен за ответ.
Здравствуйте Андрей! А Вы мою функцию вставляете после знака «?>» или до?
Вы же сказали Виталий после, поэтому после.
Какой-то конфликт происходит. Функция рабочая, проверенная тысячу раз. Часто встречается ситуация, когда разработчики шаблона внедряют собственную функцию вывода комментариев на сайте.
Здравствуйте. А вы не подскажите, как определить функцию, которую внедряют разработчики, чтобы самому подредактировать ваш код под нее? Спасибо.
Здравствуйте Константин! В файле comments.php найдите такую функцию
Вместо mayak_comment у должно быть вписано другое название. Это и есть название функции, прописанной разработчиками шаблона. Ищите функцию с точно таким названием в файле functions.php.
Здравствуйте,
Поменялись стандарты и теперь выдает ошибку:
ПРЕДУПРЕЖДЕНИЕ: поле comment содержит некорректный тип данных
schema.org/UserComments
. Допустимые типы данныхschema.org/Comment
Исправьте пожалуйста код в статье
Спасибо Игорь! Уже поправил код.
Здравствуйте. У меня такой вопросик. А если я применяю itemscope itemtype=»http://schema.org/Blog» к head? Где находятся все мета теги. Правильно ли это? Валидаторы разметки не ругаются. Ну то-есть все содержимое сайта — блог.
Здравствуйте Егор! Думаю можно и так, раз валидаторы не ругаются.
Здравствуйте, Виталий. За последнее решение с разметкой комментариев огромное спасибо! Я раньше просто изменял название vcard, убирая первую букву, чтобы Яндекс не распознавал этот кусок кода как разметку. Но ваше решение выше всяких похвал.
Спасибо Андрей на добром слове…
Здравствуйте Виталий! Помогите в моем вопросе, яндекс по микроразметке для статей показывает «article
ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов творческих работ: поле description или articleBody отсутствует или пусто
itemType =
http://schema.org/Article
» Хотя стоит плагин All in One Seo Pack и есть описание к каждой статье есть описание, когда проверяеш код страницы тоже есть, а вот в яндекс микроразметке неткогда прописываю itemType =
http://schema.org/Article
» как в вашей статье , то появляется еще одна точно такая же ошибкаАлександр, надо обернуть в span и пометить description или articleBody пару первых абзацев текста, тогда ошибка пропадет.
а для чего тогда плагин All in One Seo Pack, ведь там же уникальное описание статьи, а не копия, можно как то связать description с плагина для микроразметки
Александр, причем тут плагин All in One Seo Pack? Вам надо разметить первых 2 — 3 абзаца с помощью элемента микроразметки:
Сделать это можно с помощью функции:
Удачи!
Проблема осталась, появилась новая ошибка microdata
ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
Нашел причину!itemtype=»http://schema.org/Article» было прописано в плагине wp-postratings, удалил и ошибка пропала
Здравствуйте, Виталий.
Основной упор на продвижение своего блога, планирую организовать через SMO, но прежде, хочется оптимизировать содержимое под SEO. В общем для этого дела установил плагины All in One Seo Pack, а также All In One Schema.org Rich Snippets. Но в итоге снес последний, т.к. мне не понравилось то, что при его использовании, он формирует уродливую таблицу на странице записи, которая портит внешний вид.
В общем посе этого стал искать решения своей проблемы и наткнулся на Ваш замечательный ресурс (добавил в закладки, буду изучать).
Собственно на данный момент, у меня несколько вопросов, по внедрению разметки Schema.org
Во-первых, при проверки в валидаторе Яндекса, у меня не появляется, сообщения об отсутствии разметки, а выводится следующий текст:
Во-вторых: я не смог понять, где мне нужно внести изменения в header.php в моём шаблоне.
Пжл, помогите разобраться!
Спасибо, а что это за ошибки, кто в курсе?
i11.pixs.ru/storage/0/9/8/Screenshot_9506822_19012098.png
Подскажите пожалуйста как можно отфильтровать изображения для разметки. К примеру что б бралось первое или последнее или изображение с атрибутом title к примеру.
К сожалению, такого решения я не знаю.
Вопрос на засыпку, обязательно ли для главной страницы делать микроразметку? Я её делаю для статей чтоб была миниатюра, ну и ингредиенты если что. Имя и инструкция тоже как я понимаю необязательны, валидатор яндекса не просит инструкцию, а в сниппете она все равно не отображается.
Описание как я понимаю тоже не идёт в сниппет? В микроразметку мы ж его не добавляем?
Если Вы имеете в виду билилиотеку itemtype=»http://schema.org/WPHeader», то это разметка шапки сайта, а не главной страницы. Можно данную библиотеку и не применять, по-моему валидатор не ругается.
Да, я получается пропустил полностью разметку шапки сайта и сделал только разметку страницы записи, валидатор не ругается, правда я пропустил и автора, но валидатор его не требует, а оно мне вроде как особо и не надо))))
Не подскажете через сколько сниппет изменится в Гугле и Яндексе? А то пока сделал ради интереса только одну страницу и пока тишина. С Яндексом понятно, а Гугл как долго может обновляться? Спасибо.
Для все сайтов по разному.
Добрый день. У меня несколько вопросов по микроразметке schema.org.
1. На странице помощи у Вас перечислены схемы, которые поддерживает Яндекс:
https://yandex.ru/support/webmaster/schema-org/what-is-schema-org.xml
.Вопрос: стоит ли использовать на сайте для микроразметки другие сущности, которых нет в этом списке Яндекса (к примеру, Article, User comments и т.д.)? Будет ли как-то различать их поисковый робот или для него это просто будет лишним кодом на странице?
2. У схемы «Article» есть поле «description». Будет ли содержимое этого поля как-то влиять на сниппет статьи в поисковой выдаче? Или лучше не ставить на сайт эту схему микроразметки schema.org и использовать обычный мета тег «description» как более действенный инструмент влияния на выдачу в сниппете?
3. На одной странице есть статья и под ней комментарии. Если для статьи использовать схему «article», а для комментариев «user comments», то будет ли их разделять поисковый робот? Или для него все равно комментарии будут продолжением статьи?
Большое спасибо!!
Здравствуйте!
1. Вам все покажет валидатор, как работ различать данные библиотеки.
2. Текст description вполне может попасть в сниппет, также как и не попасть. Здесь от запроса многое зависит.
3. Поисковики выделяют отдельных роботов для работы с комментариями.
Здравствуйте, Виталий!
Разметка на вашем сайте помогла указать роботу, какой контент важен и что он значит. А разметка помогла составить сниппеты для поисковых систем?
Здравствуйте Артем! Да конечно, особенно это ярко выражено на кулинарном блоге.
Здравствуйте, Виталий.
Валидатор микроразметки Яндекса показывает одну ошибку на моем сайте:
microdata
ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
itemType =
description = тут идет описание
keywords = тут ключевые слова
Нужно вместо
вставить ?
И как быть с keywords? Единственная строка в header.php где упоминается keywords выглядит так:
<input type="search" class="search-field" placeholder="» value=»» name=»s» title=»» />
И еще нескромный вопрос — откуда у Вас такая хорошая посещаемость? Директ? Мне бы хоть половину от таковой…
Здравствуйте Эйлат!
Ошибка microdata встречается довольно часто и причины вы основном в неправильном размещении элементов микроразметки. Еще такая ошибка возникает при включенной опции микроразметки в плагине All in One SEO Pack.
Попробую преобразовать в html сущность
В предыдущем комментарии
Нужно вместо
<h2 class="description"><?php bloginfo( 'description' ); ?></h2>
вставить
<h2 itemprop="description" class="description"><?php bloginfo( 'description' ); ?></h2> ?
Здравствуйте, Виталий!
И вновь ваша статья помогла мне. На этот раз с микроразметкой. Не знала, как разметить фотографии, которых у меня на блоге в каждой статье в среднем 15 штук. Нашла у Вас скрипт, который с первого раза вписался в структуру моего блога:) Спасибо Вам за него!
А вот с разметкой даты пока не справилась…
Что делать, если код исправления микроразметки комментариев в functions.php приводит к внутренней ошибке 500?
Добрый день, Виталий!
Пытаюсь создать разметку навигационного меню в шапке, но не выходит — не могу понять где вписывать itemprop=»url» и «name». Функция ссылается на некое ‘primary-menu’ где его искать-не понятно.
Хотел бы попросить помочь с этим.
Заранее спасибо!
Дмитрий, шаблоны все разные и itemprop=»url» ставится в ссылку, которая одновременно является заголовком сайта.
Здравствуйте! Подскажите пожалуйста Проверка выдает
blog
ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов творческих работ: поле description или articleBody отсутствует или пусто
itemType = http://schema.org/Blog
Как можно исправить?
Здравствуйте Алексей! Вот из этого комментария функцию вставьте в файл functions.php Вашей темы.
не сработало с этой функцией
подскажите где можно использовать itemType =
http://schema.org/Blog
с недавним обновлением микроразметки от 9 декабря у всех на блогах появились новые ошибки Подскажите как можно все поправить?
image [ImageObject]:
height: отсутствует (обязательное)
url: отсутствует (обязательное)
width: отсутствует (обязательное)
Для image указан недопустимый URL.
publisher: отсутствует (обязательное)
dateModified: отсутствует (рекомендуется)
mainEntityOfPage: отсутствует (рекомендуется)
Алексей, пока ответить нечего, разбираюсь.
При проверке структурированных данных возникает сообщение:
Необходимо указать значение для поля logo.
Требуется:
Статьи об ускоренных мобильных страницах(Что это?)
Дима, вышло обновление микроразметки, пока разбираюсь.
Здравствуйте Виталий. Что с разметкой творится? Они достали короче. Я уже не знаю как исправлять. Неделю назад все ровно было, а теперь ошибки повылазили. У вас посмотрел, абсолютно такие же ошибки. В Google все неровно стало. В Яндексе пока не обновилась разметка.
Здравствуйте Егор! И не говори, задолбали не то слово. Вышло обновление schema.org от 9 декабря, да еще WordPress добавил масло в огонь, изменив урлы изображений. В общем теперь есть чем заняться, пока разбираюсь.
Виталий, здравствуйте, у вас вируса нет на блоге? А то заходя к вам из поиска мне автоматом скачался какой-то файл, я его удалил сразу, проверьте.
Здравствуйте Валентин! Спасибо за предупреждение. Сделал тщательную проверку, пока ничего не обнаружил, но если вдруг такое повториться, вы мне обязательно дайте знать.
В общем друзья дела такие. Посидел денек за компом и разобрался с обновлением микроразметки.
На своем тестовом сайте выполнил все новые условия и Гугл улыбнулся, но радоваться пришлось не долго. Яндекс принял в штыки новые элементы и вывалил целую кучу ошибок.
Возможно со временем Яша и Гоша найдут общий язык, а пока думаю не стоит рыпаться и что-то менять.
здравствуйте Виталий а не подскажите разметку для гугла что у вас получилось У меня сайт только под гугл в яндексе под фильтром
Здравствуйте Алексей! Я делал разметку для библиотеки
itemscope itemtype="http://schema.org/Article"
, Вы какую используете?такуюже
Хорошо Алексей, начинаю писать статью, так как в рамках комментария всего не расскажешь, может еще кому пригодится.
Доброе время суток Виталий! Как скоро можно будет ее прочесть?
Уже можно прочесть, вы бы на обновления что ли подписались.
Огромное спасибо за ваш труд! На обновления вроде подписывался Ещё запишусь
Здравствуйте. Ну у кого доменное имя US, те пусть и меняют.
У меня вопрос относительно микроразметки к комментариям. У меня в файле comments.php вместо , стоит и потому валидатор ругается.
Скажите как мне внедрить разметки в комментарии
Добрый день!
А что делать если header.php нет строки о description?
Так можно создать.
а не подскажете как?) я дилетант
/**/ если вставить что то подобное, ничего не испорчу?
Я просто не могу понять, если можно в консоли вордпресс добавить опсиание сайта, т.е. description, то почему нет инфы о нем в шаблоне
<h2><?php bloginfo('description'); ?></h2>
Инфа с seo плагина выводится в исходный код, а тут идет речь о видимом описании сайта. Вы выбрали нужную функцию! Может что-нибудь съехать, но это поправить можно, и не обязательно в h2 оборачивать, можно просто в тег p.
По поводу микроразметки картинок: для отдельной статьи все ок, валидатор не ругается
Но когда запихиваешь главную страницу в валидатор на проверку, то появляется ошибка:
microdata
ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
itemType =
image
href =
http://localhost/blog/wp-content/uploads/2016/01/Image0.jpg
text = Image0
как быть?)
Как по мне, так для главной достаточно разметки в шапке.
Да я знаю. У меня так и было сделано, но после обновления гуглом микроразметки. Почему то именно на кол-во комментариев стал ругатся гугл и яндекс. Как я понял это потому что комменатарии у меня существует отдельно. Как мне все это объеденить?
Отличная статья, мне кое что из нее очень помогло, но вот есть одно но… Код для разметки комментариев вставляю в файл функций после закрывающего тега, обновляю страницу блога и выдает ошибку 500, вставляю по другому тоже самое. Очень жаль что этот хак для комментов не подошел
Добрый день, Виталий!
Микроразметку удалось внедрить практически полностью. Единственно, не совсем понял, как в моем случае разметить шапку сайта — в файле header.php у меня нет тегов h1 и h2, поэтому не понятно, где надо указать элементы itemprop=»headline» и itemprop=»description». при этом валидатор микроразметки яндекса и гугла ошибок не выявляет. подскажите, пожалуйста, что необходимо исправить в шаблоне (файле header.php)?
Артем, темы все разные, мне трудно сказать где, что надо сделать. Можно вообще не размечать шапку.
Что мне выбрать подскажи пожалуйста, какой словарь взять? Сайт в адресе блога.
Лучше использовать библиотеку schema.org/Article. Вот статья.
После внедрения кода в functions.php возникла ошибка:
article
ПРЕДУПРЕЖДЕНИЕ: поле resultPhoto не определено в спецификации
http://schema.org/Article
Причем на странице:
abisab.com/wifi-nastroyka/kak-uznat-parol-ot-svoey-wifi-vayfay-seti
нет ошибки, а на странице:abisab.com/zhelezo/kompyuter-ili-noutbuk-ne-vidit-fleshku
есть эта ошибка.Подскажите почему может возникать эта причина?
Поле resultPhoto не определено в спецификации
http://schema.org/Article
потому, что оно относится к спецификацииhttp://schema.org/Recipe
.Прошу ответить в личку. Я поставил микроразметку, при комментировании появляется дополнительно микроразметка vcard в коде темы ее нет (вот страница для примера:
abisab.com/kompyuter/kak-izmenit-chastotu-monitora
), подскажите почему у меня так получается. Заранее очень признателен.Благодарю Вас за качественный урок по микроразметке, по сути благодаря Вам могу идти на фриланс и зарабатывать… Микроразметку поставил на сайт, теперь Гугл и Яндекс дружат 😉
Доброго времени суток!
Спасибо за полезную информацию на блоге!
Подскажите пожалуйста, как в resultphoto вывести не первую фотографию в записи а последнюю или ту которая в миниатюре записи. Просто у меня во всех записях первое фото — это ингридиенты а последнее это готовое блюдо.
Заранее большое спасибо!
Это сложно! Скорее всего в рецептах у Вас разное количество изображений и чтобы получить последнее… даже не знаю…
К каждой записи идет миниатюра, может ее можно вывести как resultphoto?
Думаю можно.
Осталось узнать как 🙂
Думаю что в этой части Вашего кода:
return preg_replace(array(‘{img itemprop=»image»}’), array(‘<img itemprop="resultPhoto"'),$content, 1);
Нужно вместо '{img itemprop="image"}' вызвать миниатюру записи. Не могу найти и понять какую функцию вставить.
Есть идеи?
Александр, дело в том, что миниатюры выводятся не в теле поста и под библиотеку
http://schema.org/Recipe
они не подпадут и будет ошибка, так что этот номер не пройдет.Спасибо за ответ. Значит буду ставить фото с готовым блюдо первым в записи.
Добрый день!
Есть еще один вопрос:
при выводе recipeInstructions по вашему алгоритму у меня выводит первую фразу в записи а не как у Вас описание после фразы «Рецепт мясного рулета с яйцом». Подскажите как сделать так чтоб recipeInstructions брал нужный текст а не первые фразы записи? У меня например нужно брать текст после фразы «Ход работы».
Заключить «Ход работы» в теги h3 и в файл functions.php вставьте следующее:
Большое спасибо!!! Все получилось!
Пришла идея по поводу присвоения последней в записи картинке resultphoto, что если воспользоваться аналогичным скриптом и присваивать resultphoto картинке которая идет после фразы, например, готовое блюдо:
Можно так сделать?
Не могу вывести разметку комментариев, посмотрите пожалуйста код страницы: abisab.com/kompyuter/propal-znachok-gromkosti-v-tree-neobhodimo-perezapustit-provodnik
Микроразметка не видна именно в Яндексе, кэш чистил…
Попробовал вставить отдельно код комментариев в инструмент микроразметки Яндекса, та все в порядке — все элементы отображаются, но как только вставляю адрес страницы, микроразметка комментариев не читается…
И еще один момент: В инструменте микроразметки Google в itemprop=»text» также в это поле включаются все комментарии, подскажите почему так происходит?
Область комментариев попадает под действие библиотеки Article?
Да , попадает, я взял full container.
Попробуйте подключение библиотеки Comment по перемещать.
Там максимум два места пробовал и туда и туда, не отображается в Яндексе и все тут…
Подскажите пожалуйста в чём может быть проблема, проверил сайт в валидаторе микроразметки от Яндекса и увидел следующую ошибку:
microdata
ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
itemType =
description = Добро пожаловать в интернет-магазин «Sofiya Shop»! У нас представлен большой выбор нижнего белья, детской одежды и постельных принадлежностей.
keywords = Интернет магазин нижнего белья София шоп, нижнее белье интернет магазин, купить нижнее белье в интернет магазине, нижнее белье интернет магазин одесса
То есть, нет микроразметки на метатегах? Использую плагин all in seo pack на движке вордпрес, стоит галочка в настройках “Использовать разметку Schema.org”
Можно ли решить такую проблему, или стоит просто выключить в настройках плагина поддержку микроразметки?
Здравствуйте Александр!
Плагин All in One SEO Pack не годится для микроразметки и галочку надо снимать.
Спасибо за подсказку. Будем другие способы пробовать.
Здравствуйте!
Имеется вопрос по поводу списков ингредиентов:
Ваша функция добавляет itemprop="ingredients в любой LI стандартного списка UL или OL.
У меня же например ингредиенты находятся в таблице:
<table class="bordered"><td itemprop="ingredients">Томатный сок</td></table>
А приготовление (recipeInstructions) находятся в списке <ol class="recipe-ol">
Как реализовать вашу функцию допустим ТОЛЬКО для списка <ol class="recipe-ol"> и таблицы ингредиентов <table class="bordered"><td itemprop="ingredients"> ?
Заранее благодарю за помощь!
Виталий, доброго времени суток! Все получилось сделать оперативно благодаря вашей статье.
Но возникло пару вопросов:
1. С помощью функции, которая приписывает всем тегам li разметку ингридиентов, у меня также и под ингридиенты попали шаги рецепта, то есть грубо говоря у меня ингридиенты в виде маркированного списка, а шаги приготовления рецепта в виде нумерованного и ко всему этому добавилось разметка ingredients. Это нормально считается или я что-то не так сделал?
2. В валидаторе вылазят такие вот предупреждения:
ПРЕДУПРЕЖДЕНИЕ: поле calories не определено в спецификации
http://schema.org/Recipe
ПРЕДУПРЕЖДЕНИЕ: поле fatContent не определено в спецификации
http://schema.org/Recipe
ПРЕДУПРЕЖДЕНИЕ: поле carbohydrateContent не определено в спецификации
http://schema.org/Recipe
Хотелось бы услышать ваше мнение, нужно ли использовать разметку калорий, жиров и углеводов в рецептах? А то валидаторы и яндекса и гугла ее не признают.
Заранее огромное спасибо за ответы!
Здравствуйте Сергей!
1. Придется убрать элементы списка из шагов приготовления.
2. Если эти элементы не признаются ПС, тогда зачем их использовать…
Здравствуйте!
Только начал заниматься изучением микроразметки. И сначала установил на сайт плагин Schema
wordpress.org/plugins/schema/
Вроде хороший плагин. В гугле всё отлично, но в Яндексе выдает такую ошибку на странице поста:
ОШИБКА: поле
http://schema.org/ArticleSection
не определено в спецификацииhttp://schema.org/BlogPosting
. Возможно вы имели ввидуhttp://schema.org/articleSection
Связано ли ето с плагином, или с чем то ещё.
Спасибо!
Здравствуйте Богдан!
Дело в разном понимании некоторых элементом мироразметки в Яндексе и Гугле.
Я так понимаю, ошибка не критична?
Ошибка, есть ошибка.
Спасибо за статью. Может подскажете, куда мне вставить 'callback=mayak_comment'
Функция комментария у меня так вызывается
<div class="comment-list">
<?php wp_list_comments( array( 'style' => 'div', 'avatar_size' => 48 ) ); ?>
</div>
Вот там надо вставлять:
Спасибо!
С этим все ОК теперь!
Но yandex все равно чет гонит. Google — все говорит ОК!
vcard
ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов Яндекс.Справочника: кажется, ваша разметка hCard описывает не организацию (поля fn и org не совпадают). В данный момент такая разметка не поддерживается Яндексом
fn = Housewife
n = Housewife
url =
http://www.naprobu.menu/author/housewife
Вот. И
microdata
ОШИБКА: невозможно определить принадлежность данных полей. Возможны две причины: эти поля некорректно размещены, либо указан лишний атрибут itemprop
itemType =
comment
comment
itemType =
http://schema.org/Comment
creator = Dmitry Glazkov:
datepublished = 2016-08-10
text = Это невероятная вкусняха!
(но в google ошибки не видит)
Яндекс и Гугл по разному смотрят на микроразметку.
Ищите, где у Вас стоит класс «fn», из-за него первая ошибка. Класс надо удалить.
Вторая ошибка появляется из-за некорректного указания зоны действия библиотеки http://schema.org/Comment. Тут надо с каждым конкретным случаем разбираться, ситуации разные бывают.
Микроразметка в шаблоне должна быть или удобнее добавлять на стадии кодирования?
Микроразметка и так в шаблоне делается. Не понял вашего вопроса.
Подскажите, в чем может быть проблема? На сайте есть разметка schema.org/Product.
Валидатор гугла говорит что ошибок нет, но в вебмастере на каждой странице товара ошибка «Отсутствует минимальная или максимальная оценка». Разметку рейтинга не использую
Видимо какй-то «хвост» микроразметки в рейтинге все же есть…
Есть классы rating и review. Неужели гугл их находит без указания сущности (
В какой-то момент в схеме Recipe заменили ingredients на recipeIngredient. Теперь валидатор микроразметки выдает ошибку. Подскажите: надо просто заменить ingredients на recipeIngredient, чтобы все опять заработало?
Странно, Гугл ошибку на ingredients не выдает, только Яндекс ругается, зато в Гугле куча других предупреждений. В общем опять микроразметку поменяли, надоели уже!
А как можно вставить такую разметку на сайт с рецептами в blogger?
И можно ли это вообще сделать?
Добрый вечер! Проблема с микроразметкой комментариев. Делаю все по Вашей схеме, но ничего не происходит. в чем может быть проблема?
Разработчики шаблонов зачастую пишут свои функции вывода комментариев. Вполне возможно, что у Вас в шаблоне есть такая функция, поищите.
Да есть такая функция. Что-то можно с ней сделать?
// Rowling comment function
if ( ! function_exists( 'rowling_comment' ) ) :
function rowling_comment( $comment, $args, $depth ) {
$GLOBALS['comment'] = $comment;
switch ( $comment->comment_type ) :
case 'pingback' :
case 'trackback' :
?>
<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
<?php __( 'Pingback:', 'rowling' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( 'Edit', 'rowling' ), '<span class="edit-link">', '</span>' ); ?>
</li>
<?php
break;
default :
global $post;
?>
<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
<div id="comment-<?php comment_ID(); ?>" class="comment">
<?php echo get_avatar( $comment, 160 ); ?>
<?php if ( $comment->user_id === $post->post_author ) : ?>
<a class="comment-author-icon" data-link="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>" title="<?php _e('Comment by post author','rowling'); ?>"><div class="fa fw fa-user"></div></a>
<?php endif; ?>
<div class="comment-inner">
<div class="comment-header">
<h4><?php echo get_comment_author_link(); ?></h4>
</div> <!— /comment-header —>
<div class="comment-content post-content">
<?php comment_text(); ?>
</div><!— /comment-content —>
<div class="comment-meta">
<div class="fleft">
<div class="fa fw fa-clock-o"></div><a class="comment-date-link" data-link="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>" title="<?php echo get_comment_date() . ' at ' . get_comment_time(); ?>"><?php echo get_comment_date(get_option('date_format')); ?></a>
<?php edit_comment_link( __( 'Edit', 'rowling' ), '<div class="fa fw fa-wrench"></div>', '' ); ?>
</div>
<?php if ( '0' == $comment->comment_approved ) : ?>
<div class="comment-awaiting-moderation fright">
<div class="fa fw fa-exclamation-circle"></div><?php _e( 'Awaiting moderation', 'rowling' ); ?>
</div>
<?php else : ?>
<?php
comment_reply_link( array(
'reply_text' => __('Ответить','rowling'),
'depth' => $depth,
'max_depth' => $args['max_depth'],
'before' => '<div class="fright"><div class="fa fw fa-reply"></div>',
'after' => '</div>'
)
);
?>
<?php endif; ?>
<div class="clear"></div>
</div> <!— /comment-meta —>
</div> <!— /comment-inner —>
</div><!— /comment-## —>
<?php
break;
endswitch;
}
endif;
Надо разметить ее по примеру моей функции.
Это как? Что разместить? Вашу функцию или та что уже есть? Или как-то нужно отредактировать существующию функцию?
Не разместить, а разметить) Да, нужно отредактировать существующую функцию и вставить в нее элементы микроразметки. Если вы подключите мою функцию, то слетят все стили.
Это для меня тяжеловато) А можно просто еще вставить одну функцию и прописать ее?
Вроде поучилось. взял элементы микроразметки из Вашей функции. Вот что получилось
https://search.google.com/structured-data/testing-tool#url=http%3A%2F%2Ftest1.apple-pnz.com%2Fraznoe%2Fpress%2Fapple-pnz-pokupaet-tehniku-apple-menyaet-apple-prodaet-apple.html
Не могли бы Вы проверить правильно ли я все сделал?
Еще один вопрос, не могу у себя в шаблоне найти функцию вывода количества комментариев. Может есть какая другая функция?
В Гугле все нормально, проверьте еще в Яндексе.
Все нормально! Спасибо! не могу у себя в шаблоне найти функцию вывода количества комментариев. Может есть какая другая функция?
Так просто вставьте эту функцию ели ее нет.
Здравствуйте! А как разметить, чтобы не первое, а последнее изображение попадало в сниппет?
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');
Здравствуйте! У меня такой же вопрос. Была бы очень благодарна Вам, если бы Вы помогли нам 🙂 Пожалуйста 🙂
Или может быть использовать миниатюру, как resultPhoto? Если Вы знаете, как это сделать, помогите, пожалуйста 🙂
Здравствуйте, поставил Вашу микроразметку комментариев, все почти гуд =) яндекс доволен =)
Но сместились имена комментаторов, вот сделал скрин, как было и как стало:
Взято вот отсюда, если что:
itelena.ru/krasota/aromaterapiya/primenenij-efirnyx-masel.html
Не подскажите как поправить?
+ не могу понять куда вставить itemprop=»commentCount», куда не вставлю, везде ругается яндекс.
Вот скрин кода с файла comments.
Буду очень рад за помощь =)
Что то скрин не отобразился, если что то вот:
i66.tinypic.com/2lc2x4l.jpg
C Новым Годом! =)
Надеюсь мне помогут после праздников =)
Все, можете потереть мои комменты, справился сам с проблемой =)
Виталий, спасибо! С помощью ваших фунций мне удалось разметить свой кулинарный блог, фото в расширенных сниппетах рецептов уже стали активно появляться в поисковой выдаче. Правда пришлось с разметкой миниатюры в качестве resultphoto повозиться в связи с особенностями шаблона. Предложенная Вами функция не сработала, из размеченных изображений подтягивалось в сниппет первое пошаговое. Вопрос решился заменой в single.php атрибута для thumbnail
itemprop=’image’ на itemprop=’resultPhoto’ вручную.
Здравствуйте!
Гугл пишет
@type Тип не
Что это значит и как исправить?
Виталий, добрый день. Буду Вам признателен как эксперту за консультацию по микроразметке. На сайт была добавлена микроразметка schema.org, сущности product и offer. Валидатор яндекс не обнаружил ошибок:
resource =
http://breloknomerok.ru/
product
itemType =
http://schema.org/Product
description = Сделайте заказ брелока с номером машины на нашем сайте. Выбирайте готовое изображение или заказывайте свой индивидуальный дизайн.
offers
offer
itemType =
http://schema.org/Offer
price = от 350.00
pricecurrency = RUB
name = Брелок с номером машины на заказ
Но в панели веб мастер появилось сообщение:
«На многих страницах сайта breloknomerok.ru отсутствуют или некорректно заполнены мета-теги . Это может негативно повлиять на представление сайта в результатах поиска. »
И действительно, в выдаче, в снипете не содержится информации из поля description.
В чем ошибка ?
Буду признателен за ответ
Здравствуйте Михаил! Это предупреждение никак не связанно с микроразметкой. У Вас на сайте просто не все мета description заполнены.
Виталий, спасибо. Буду дальше разбираться с мета тегами
Здравствуйте!
При проверке микроразместки:
Гугл пишет
@type Тип не установлен.
Что это значит и как исправить?
Здравствуйте! Если «@type Тип не установлен» — какой-то элемент находится вне зоны действия библиотеки.
Виталий, здравствуйте! На Вас последняя надежда)
Шерстила Интеренет 4 дня, но ничего толкового не нашла, может быть Вы подскажете.
Ситуация следующая. Хочу внедрить микроразметку schema на сайт. При проверке в яндекс валидаторе, выскакивает информация (в прикрепленном файле).
Как я понимаю это связано с тем, что на сайте уже имеется некий формат разметки, а именно w3c. Если это так, подскажите как его убрать, может получится поделиться какой-либо полезной ссылкой по этому вопросу.
Буду рада любой ниточки, за которую можно хоть как то зацепиться.
Спасибо!
Здравствуйте! Какая информация выскакивает-то?
Я уже немножечко сдвинулась вперед в этом вопросе. Выскакивает следующее: rdfanode
resource = http://mamaschool.ru/
http://www.w3.org/1999/xhtml/vocab#alternate = http://mamaschool.ru/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fmamaschool.ru%2F&format=xml
http://www.w3.org/1999/xhtml/vocab#alternate = http://mamaschool.ru/feed
https://api.w.org/ = http://mamaschool.ru/wp-json/
http://www.w3.org/1999/xhtml/vocab#alternate = http://mamaschool.ru/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fmamaschool.ru%2F
http://www.w3.org/1999/xhtml/vocab#alternate = http://mamaschool.ru/comments/feed
нашла что такое w3c, почитала, что такое xhtml. Что-то пояснилось, на чем то запуталась.
Сейчас знаю точно, что на сайте внедрена разметка RDF — а вот как ее убрать — вопрос!
Здравствуйте!
Скажите, пожалуйста, работает ли rating в статье типа Recipe, или только в Article?
Установила на сайт рейтинг со звёздами, скрипт работает и отображается, но такое впечатление, что валидатор Гугла не видит рейтинга. Напротив кода рейтинга на странице проверки красный кружок с крестиком.
Также выдаёт два предупреждения:
Рекомендуется заполнять поле author. Укажите значение, если оно известно.
Рекомендуется заполнять поле nutrition. Укажите значение, если оно известно.
Подскажите, пожалуйста, где и как следует указывать эти значения. Изучив информация, нашла, что rel=author вроде уже отменили.
Спасибо! 🙂
Доброго времени суток Виталий!Может быть Вы подскажите, что делать с такими ошибками по микроразметке:
— ОШИБКА: поле
ogp.me/ns#url
отсутствует или пусто;— ОШИБКА: префикс article неизвестен валидатору, укажите его явно атрибутом prefix;
— ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательно условие для рецептных сниппетов: поле recipeIngredient отсутствует или пусто
ОШИБКА: В свойстве content тега meta не может содержаться ссылка;
-ПРЕДУПРЕЖДЕНИЕ: Не выполнено обязательное условие для структурированных сниппетов Яндекс. Справочника: кажется, ваша разметка hCard описывает не организацию (поля fn и org не совпадают). В данный момент такая разметка не поддерживается Яндексом.
И в Google Валидаторе выдает ошибку
resultPhoto
radost-vkusa.ru/wp-content/uploads/2017/06/копия2-min-1.jpg
(Свойство resultPhoto недопустимо для объекта типа Recipe.)За ранее благодарна!
P.S Использую тему WordPress Fooding