Диагностика проблемы: почему метаполя WooCommerce не индексируются
В стандартной настройке WooCommerce многие важные метаполя товаров (например, артикул, бренд, характеристики) не используются YoastSEO для генерации SEO-оптимизированных описаний или сниппетов. Это снижает качество SEO-оптимизации страниц товаров, особенно в нишах с большим количеством уникальных товарных атрибутов.
Основные признаки проблемы:
- В сниппетах отсутствуют важные данные из метаполей.
- YoastSEO анализирует только стандартный контент, игнорируя дополнительные поля WooCommerce.
- Отсутствие структурированных данных, относящихся к кастомным метаполям.
Как расширить YoastSEO для учета метаполей WooCommerce
Добавляем метаполя в анализ SEO контента
Чтобы Yoast учитывал кастомные поля при анализе и формировании сниппетов, нужно использовать фильтр wpseo_pre_analysis_post_content. Например, добавим данные из метаполя _sku (артикул товара):
add_filter('wpseo_pre_analysis_post_content', function($content, $post) {
if ($post->post_type === 'product') {
$sku = get_post_meta($post->ID, '_sku', true);
if ($sku) {
$content .= ' ' . $sku;
}
}
return $content;
}, 10, 2);Добавляем метаполя в метаданные для сниппетов Schema
YoastSEO позволяет расширять JSON-LD через фильтр wpseo_json_ld_output. Добавим бренд из метаполя _brand в структурированные данные:
add_filter('wpseo_json_ld_output', function($data, $context) {
if ($context->context === 'product') {
$post_id = $context->id;
$brand = get_post_meta($post_id, '_brand', true);
if ($brand) {
foreach ($data as &$entry) {
if ($entry['@type'] === 'Product') {
$entry['brand'] = [
'@type' => 'Brand',
'name' => $brand,
];
}
}
}
}
return $data;
}, 10, 2);Пошаговое решение
- Определите ключевые метаполя WooCommerce, которые хотите включить в SEO (например,
_sku,_brand,_custom_attribute). - В functions.php вашей темы или в кастомном плагине добавьте фильтр для включения данных метаполей в контент анализа YoastSEO (пример выше).
- Добавьте расширение JSON-LD с помощью фильтра
wpseo_json_ld_outputдля включения метаданных в сниппеты. - Очистите кэш сайта и обновите кэш YoastSEO (если используется).
- Проверьте работу через Google Rich Results Testing и просмотр исходного кода страниц товаров.
Проверка результата после внедрения
Для проверки используйте следующий чек-лист:
- Откройте страницу товара и проверьте исходный код — в секции JSON-LD должен появиться блок
"brand"с нужным значением. - Используйте инструмент Google Rich Results Test (https://search.google.com/test/rich-results) для проверки структурированных данных.
- В панели YoastSEO на странице товара проверьте, что анализ текста учитывает дополнительные метаполя (например, артикул отображается в анализе).
- Проверьте работу сниппетов в поиске через несколько дней после индексации.
Частые ошибки и как их исправить
- Метаполя не выводятся в JSON-LD: Проверьте, что фильтр
wpseo_json_ld_outputприменяется именно к нужному контексту ($context->context === 'product') и что ID поста корректен. - Дополнительный контент не влияет на SEO-анализ: Проверьте правильность приоритета фильтра и количество аргументов, например,
add_filter('wpseo_pre_analysis_post_content', 'callback', 10, 2);. - Кэш мешает обновлению: Очистите все уровни кэша (плагин, сервер, CDN), чтобы увидеть изменения.
- Конфликты с другими плагинами WooCommerce: Временно отключите другие SEO и кастомизации WooCommerce плагины для проверки.
Практические советы по безопасности и производительности
- Используйте
get_post_metaс третьим параметромtrueдля возврата одиночного значения и избежать лишних массивов. - Минимизируйте объем данных, добавляемых в SEO-анализ, чтобы не замедлять работу Yoast.
- Регулярно обновляйте YoastSEO и WooCommerce для совместимости и безопасности.
- В случае большого количества кастомных полей рассмотрите использование специализированных SEO-плагинов для WooCommerce или оптимизацию на уровне шаблонов.
Сравнение вариантов интеграции метаполей WooCommerce с YoastSEO
| Метод | Преимущества | Недостатки | Пример кода |
|---|---|---|---|
Фильтр wpseo_pre_analysis_post_content | Простое добавление в SEO-анализ текста | Ограничено текстовым анализом, не добавляет структуру | См. код с добавлением SKU |
Фильтр wpseo_json_ld_output | Добавление структурированных данных для сниппетов | Требует понимания JSON-LD и структуры данных | См. код с добавлением бренда |
| Использование сторонних плагинов | Может покрыть много полей без кода | Может влиять на производительность и вызвать конфликты | — |