Как создать динамическую разметку schema.org для страниц продуктов WooCommerce в WordPress?

Вопрос или проблема

Я управляю интернет-магазином на платформе WooCommerce и хочу улучшить страницы своих товаров с помощью структурированных данных schema.org. В частности, я хочу динамически добавить атрибуты schema, такие как Product, Offer и Review, на страницы товаров, чтобы повысить SEO и обеспечить отображение расширенных сниппетов в результатах поиска.

Существует ли рекомендуемый способ динамического добавления этих атрибутов в или в другом месте шаблона товара? Мне нужно изменить шаблон single-product.php, или есть более эффективный способ сделать это с помощью хуков или фильтров WordPress? Примеры были бы очень полезны!

Ответ или решение

Для добавления динамической разметки 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. Дополнительные шаги

Заключение

Используя описанный выше подход, вы сможете динамически генерировать разметку schema.org на страницах продуктов WooCommerce. Это значительно улучшит SEO вашей страницы и поможет вам получить более привлекательные сниппеты в результатах поиска.

Оцените материал
Добавить комментарий

Капча загружается...