Метаданные — важная часть SEO-оптимизации сайта на WordPress. Они помогают поисковым системам лучше понимать содержание страниц и влияют на то, как ваши страницы отображаются в выдаче. В этой статье разберём, как добавить динамические метаданные (title, description, keywords и Open Graph теги) в WordPress, используя код и плагины, а также рассмотрим примеры кастомизации под разные типы контента.
Почему важны динамические метаданные в WordPress
Стандартные метаданные в WordPress часто статичны или формируются автоматически, но не всегда корректно отражают содержание страницы, особенно если у вас кастомные типы записей или сложные архивы. Динамические метаданные позволяют:
- Автоматически подставлять уникальные заголовки и описания для каждой страницы.
- Улучшить CTR в поисковой выдаче за счёт релевантных сниппетов.
- Учитывать особенности разных типов контента (посты, страницы, товары, портфолио).
- Добавлять Open Graph и Twitter Card для корректного отображения при шаринге в соцсетях.
Кроме того, динамический подход помогает избежать дублирования метаданных и повысить качество SEO.
Использование плагинов для динамических метаданных
Для большинства пользователей удобно использовать плагины, которые дают гибкий функционал без необходимости писать код. Рассмотрим самые популярные и эффективные плагины:
Yoast SEO
Yoast SEO автоматически формирует метаданные под каждый тип записи и страницу, но при необходимости можно настроить шаблоны в разделе «Поисковый внешний вид».
- Настройка шаблонов title и description с помощью переменных (например, %%title%%, %%excerpt%%).
- Поддержка Open Graph и Twitter Cards.
- Возможность задать отдельные метаданные для таксономий и архивов.
Если нужно расширить функционал, можно добавить фильтры в functions.php, например, изменить title:
function wpcom_custom_yoast_title($title) {
if (is_singular('product')) {
$title .= ' | Лучшие продукты на WPcom.ru';
}
return $title;
}
add_filter('wpseo_title', 'wpcom_custom_yoast_title');
All in One SEO Pack
Хороший аналог с простым интерфейсом, поддерживает шаблоны для метаданных, Open Graph, а также интеграцию с WooCommerce.
Clearfy Pro
Если вы используете Clearfy Pro с https://wpshop.ru/clearfy, можно отключить лишние метаданные и оптимизировать вывод SEO тегов, уменьшая размер страницы и улучшая безопасность.
Добавление динамических метаданных через код в functions.php
Если вы предпочитаете минимизировать количество плагинов и хотите полный контроль, можно добавить динамические метаданные вручную. Ниже пример функции, которая выводит динамический title и description в <head>:
function wpcom_dynamic_meta_tags() {
if (is_singular()) {
global $post;
$title = get_the_title($post->ID);
$description = has_excerpt($post->ID) ? get_the_excerpt($post->ID) : wp_trim_words(strip_tags($post->post_content), 25);
echo "<title>" . esc_html($title) . "</title>\n";
echo "<meta name=\"description\" content=\"" . esc_attr($description) . "\" />\n";
// Open Graph
echo "<meta property=\"og:title\" content=\"" . esc_attr($title) . "\" />\n";
echo "<meta property=\"og:description\" content=\"" . esc_attr($description) . "\" />\n";
echo "<meta property=\"og:type\" content=\"article\" />\n";
echo "<meta property=\"og:url\" content=\"" . esc_url(get_permalink($post->ID)) . "\" />\n";
} elseif (is_home() || is_front_page()) {
$title = get_bloginfo('name');
$description = get_bloginfo('description');
echo "<title>" . esc_html($title) . "</title>\n";
echo "<meta name=\"description\" content=\"" . esc_attr($description) . "\" />\n";
}
}
add_action('wp_head', 'wpcom_dynamic_meta_tags', 1);
Этот код динамически добавляет title, description и Open Graph теги для отдельных записей и главной страницы. Его можно расширять для поддержки архивов, таксономий и других типов контента.
Настройка метаданных для кастомных типов записей и архивов
Если у вас на сайте кастомные типы записей (например, портфолио, товары и т.д.), важно, чтобы метаданные корректно формировались и для них. Рассмотрим пример для типа записи portfolio:
function wpcom_portfolio_meta_tags() {
if (is_singular('portfolio')) {
global $post;
$title = get_the_title($post->ID) . ' | Портфолио WPcom.ru';
$description = has_excerpt($post->ID) ? get_the_excerpt($post->ID) : 'Посмотрите наше портфолио с лучшими работами.';
echo "<title>" . esc_html($title) . "</title>\n";
echo "<meta name=\"description\" content=\"" . esc_attr($description) . "\" />\n";
}
}
add_action('wp_head', 'wpcom_portfolio_meta_tags', 2);
Для архивов кастомных типов можно добавить условие is_post_type_archive('portfolio') и сформировать метаданные с учётом специфики контента.
Как избежать дублированных метаданных и конфликтов
Если на сайте установлен плагин SEO, не стоит дублировать метаданные через код, иначе в <head> появится несколько тегов title и description, что вредно для SEO. Рекомендуется:
- Выключать вывод SEO метаданных в коде, если плагин уже их генерирует.
- Использовать фильтры плагинов, чтобы менять стандартные шаблоны метаданных.
- Для сложных случаев создавать отдельные функции с условием, чтобы они срабатывали только там, где нужно.
Например, чтобы убрать стандартный title Yoast на определённых страницах, можно использовать:
add_filter('wpseo_title', function($title) {
if (is_page('special')) {
return 'Особая страница с уникальным заголовком';
}
return $title;
});
Выводы и рекомендации
Динамические метаданные — залог качественной SEO-оптимизации. Лучше всего использовать проверенные плагины с возможностью настройки шаблонов. Если нужен полный контроль — можно реализовать динамические метаданные через код, учитывая все типы контента.
Для расширенной оптимизации рекомендую обратить внимание на плагин Clearfy Pro, который поможет убрать лишние метаданные и оптимизировать SEO вывод.