03.04.2025
Добавление Schema разметки на WordPress для вывода данных на страницах сайта
Schema.org разметка помогает поисковым системам лучше понимать содержимое вашего сайта, что может улучшить отображение в результатах поиска (например, через rich snippets). Вот как реализовать Schema разметку в WordPress без использования плагинов, с учетом того, что поисковые роботы не принимают динамически сгенерированные данные.
Основной подход
Для корректного отображения Schema разметки в инструменте проверки Google Rich Results, данные должны быть статическими (в HTML коде страницы) или генерироваться сервером, а не динамически через JavaScript.
Способ 1: Добавление через functions.php
// Добавляем Schema разметку в head страницы
function add_schema_markup() {
// Проверяем, что мы на нужной странице (можно настроить условия)
if (is_single() || is_page()) {
global $post;
// Получаем данные поста
$post_url = get_permalink();
$post_title = get_the_title();
$post_date = get_the_date('c');
$post_modified = get_the_modified_date('c');
$post_author = get_the_author();
$post_image = has_post_thumbnail() ? get_the_post_thumbnail_url() : '';
// Формируем JSON-LD разметку
$schema = array(
'@context' => 'https://schema.org',
'@type' => 'Article',
'headline' => $post_title,
'datePublished' => $post_date,
'dateModified' => $post_modified,
'author' => array(
'@type' => 'Person',
'name' => $post_author
),
'publisher' => array(
'@type' => 'Organization',
'name' => get_bloginfo('name'),
'logo' => array(
'@type' => 'ImageObject',
'url' => 'URL_ЛОГОТИПА_САЙТА'
)
),
'mainEntityOfPage' => array(
'@type' => 'WebPage',
'@id' => $post_url
),
'image' => array(
'@type' => 'ImageObject',
'url' => $post_image
)
);
// Выводим разметку
echo '<script type="application/ld+json">' . json_encode($schema, JSON_UNESCAPED_SLASHES) . '</script>';
}
}
add_action('wp_head', 'add_schema_markup', 5);
Способ 2: Добавление непосредственно в шаблон страницы
Если вы используете page builder или кастомные шаблоны, можно добавить Schema разметку непосредственно в шаблон:
<?php
/**
* Template Name: Страница со Schema разметкой
*/
get_header();
// Получаем данные для Schema
$page_data = array(
'@context' => 'https://schema.org',
'@type' => 'WebPage',
'name' => get_the_title(),
'description' => get_the_excerpt(),
'url' => get_permalink(),
'mainEntity' => array(
'@type' => 'Article',
'headline' => get_the_title(),
'author' => array(
'@type' => 'Person',
'name' => get_the_author()
),
'datePublished' => get_the_date('c'),
'dateModified' => get_the_modified_date('c')
)
);
?>
<!-- Выводим Schema разметку -->
<script type="application/ld+json">
<?php echo json_encode($page_data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); ?>
</script>
<div class="page-content">
<?php the_content(); ?>
</div>
<?php get_footer(); ?>
Универсальный подход для любых страниц
Этот метод работает как для стандартных страниц WordPress, так и для страниц, созданных через:
- Чистую верстку (кастомные шаблоны)
- Page builders (Elementor, WPBakery, Divi и др.)
- Gutenberg блоки
function universal_schema_markup() {
// Определяем тип контента
$schema_type = 'WebPage'; // По умолчанию
if (is_single()) {
$schema_type = 'Article';
} elseif (is_page()) {
$schema_type = 'WebPage';
} elseif (is_home() || is_archive()) {
$schema_type = 'Blog';
}
// Базовые данные
$schema = array(
'@context' => 'https://schema.org',
'@type' => $schema_type,
'url' => get_permalink(),
'name' => wp_strip_all_tags(get_the_title() ?: get_bloginfo('name')),
'description' => wp_strip_all_tags(get_the_excerpt() ?: get_bloginfo('description'))
);
// Добавляем дополнительные данные в зависимости от типа
if (is_singular()) {
$schema['datePublished'] = get_the_date('c');
$schema['dateModified'] = get_the_modified_date('c');
if (has_post_thumbnail()) {
$schema['image'] = array(
'@type' => 'ImageObject',
'url' => get_the_post_thumbnail_url(null, 'full')
);
}
}
// Выводим результат
echo '<script type="application/ld+json">' .
json_encode($schema, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) .
'</script>';
}
add_action('wp_head', 'universal_schema_markup', 5);
Проверка и валидация
После реализации:
- Проверьте страницу в инструменте Google Rich Results Test: https://search.google.com/test/rich-results
- Убедитесь, что разметка отображается в исходном коде страницы (не генерируется через JavaScript)
- Для динамических сайтов (SPA) рассмотрите серверный рендеринг или pre-rendering
Важные замечания
- Этот способ добавляет статическую Schema разметку, которую поисковые роботы смогут прочитать
- Метод работает со всеми типами страниц, включая созданные через билдеры
- Для разных типов контента (товары, рецепты, события) нужно адаптировать @type и свойства
- JSON-LD (используемый в примерах) – рекомендованный Google формат разметки
Данный подход обеспечит корректное отображение структурированных данных в результатах поиска без зависимости от плагинов.