Вопрос или проблема
Я управляю интернет-магазином на платформе WooCommerce и хочу улучшить страницы своих товаров с помощью структурированных данных schema.org. В частности, я хочу динамически добавить атрибуты schema, такие как Product, Offer и Review, на страницы товаров, чтобы повысить SEO и обеспечить отображение расширенных сниппетов в результатах поиска.
Существует ли рекомендуемый способ динамического добавления этих атрибутов в
Ответ или решение
Для добавления динамической разметки schema.org на страницы продуктов WooCommerce в WordPress, есть несколько эффективных способов сделать это. Вы можете использовать хуки и фильтры, что позволит вам избежать прямого редактирования файла single-product.php
, сохраняя при этом возможность обновления темы или плагинов без потери изменений. Вот подробный подход, который вы можете использовать:
1. Использование хуков WooCommerce
WooCommerce предоставляет несколько хуков, которые позволяют вам добавлять разметку schema.org прямо в продуктовые страницы. Вы можете добавить следующий код в файл functions.php
вашей темы или в отдельный плагин.
add_action('woocommerce_single_product_summary', 'add_schema_markup', 25);
function add_schema_markup() {
global $product;
if (!$product) return;
// Получаем данные продукта
$product_id = $product->get_id();
$product_name = $product->get_name();
$product_price = $product->get_price();
$product_currency = get_woocommerce_currency();
$product_url = get_permalink($product_id);
$product_image = wp_get_attachment_url($product->get_image_id());
$product_rating = $product->get_average_rating();
$product_review_count = $product->get_review_count();
// Генерируем JSON-LD разметку
$schema_mark = array(
"@context" => "https://schema.org",
"@type" => "Product",
"name" => $product_name,
"image" => $product_image,
"description" => wp_strip_all_tags($product->get_description()), // Или краткое описание
"sku" => $product->get_sku(),
"brand" => array(
"@type" => "Brand",
"name" => get_the_terms($product_id, 'product_brand')[0]->name // Если вы используете таксономии
),
"offers" => array(
"@type" => "Offer",
"url" => $product_url,
"priceCurrency" => $product_currency,
"price" => $product_price,
"itemCondition" => "https://schema.org/NewCondition",
"availability" => "https://schema.org/InStock",
),
"aggregateRating" => array(
"@type" => "AggregateRating",
"ratingValue" => $product_rating,
"reviewCount" => $product_review_count,
),
);
// Добавляем разметку в HTML
echo '<script type="application/ld+json">' . json_encode($schema_mark) . '</script>';
}
2. Объяснение кода
-
add_action: Мы используем данный хук для добавления нашей функции в определенное место на странице продукта. В данном случае, мы добавляем разметку в
woocommerce_single_product_summary
с приоритетом 25, что помещает его после названия и цены. -
Получение данных о продукте: Через глобальную переменную
$product
мы получаем все необходимые данные (название, цену, изображение, рейтинг и отзывы). -
Генерация JSON-LD: Создаем массив с данными в формате JSON-LD, следуя спецификациям schema.org.
-
Вставка разметки: Мы выводим разметку в HTML-документе.
3. Дополнительные шаги
- Убедитесь, что у вас установлены и активированы все необходимые плагины, такие как WooCommerce.
- Проверьте ваш сайт с помощью Инструмента для проверки структурированных данных от Google после добавления разметки, чтобы убедиться, что она правильно отображается и не содержит ошибок.
Заключение
Используя описанный выше подход, вы сможете динамически генерировать разметку schema.org на страницах продуктов WooCommerce. Это значительно улучшит SEO вашей страницы и поможет вам получить более привлекательные сниппеты в результатах поиска.