Исправление ошибки "Задайте значение для одного из следующих элементов данных: "offers", "review" или "aggregateRating" в WooCommerce

В новой версии Google Search Console многие владельцы сайтов на WordPress с плагином Woocommerce столкнулись с ошибками в блоке “улучшения”, а именно ошибкой микроразметки. Внимательно изучив список страниц на которых возникает данная ошибка можно заметить что, проявляется она только на страницах категорий товаров. Дело в том, что WooCommerce по умолчанию на страницах категорий и каталога добавляет микроразметку, которая не только не полная, но и вообще не нужна. К счастью это довольно легко исправляется. Для того чтобы убрать лишнюю разметку, а вместе с тем и ошибки в гугл консоли. Добавьте следующий код в functions.php вашей темы:
/**
 * Remove the generated product schema markup from Product Category and Shop pages.
 */
function wc_remove_product_schema_product_archive() {
	remove_action( 'woocommerce_shop_loop', array( WC()->structured_data, 'generate_product_data' ), 10, 0 );
}
add_action( 'woocommerce_init', 'wc_remove_product_schema_product_archive' );


Обновление – Октябрь 2019.
Предыдущий метод мог работать не на всех сайтах. Поэтому публикуем второй способ решения проблемы:
add_filter( 'woocommerce_structured_data_review', 'filter_woocommerce_structured_data_review', 10, 2 );
function filter_woocommerce_structured_data_review( $markup, $comment  ) {

  global $product;

  
        $markup['itemReviewed']  = array(
            '@type' => 'Product',
            'name'  => get_the_title( $comment->comment_post_ID ),      
        
          'review' => array(
            "@type"=> "Review",
            'author'       => array(
                            '@type' => 'Person',
                            'name'  => get_comment_author( $comment->comment_ID ),
                        ),
            ),
          'aggregateRating' => array(
                            '@type'       => 'AggregateRating',
                'ratingValue' => $product->get_average_rating(),
                'reviewCount' => $product->get_review_count(),
                        ),

        );
  
    return $markup;
}
Будем благодарны если вы поделитесь в комментариях какой из способов сработал для вас.

Этот материал был для вас полезен?

Мы хотим чтобы наши статьи приносили пользу! Свяжитесь с нами если материал оказался не полным или не решил вашу проблему!

11 16

Возникли трудности или нужна помощь специалистов? Свяжитесь с нами!

Оставьте комментарий

Ваш адрес email не будет опубликован.