Cách khắc phục sửa lỗi Product Snippets & Merchant listings thành công 100%

Trường "aggregateRating" bị thiếu

Trong quá trình SEO website thương mại điện tử có cài đặt plugin Woocomerce sẽ có các lỗi về Product Snippets và Merchant listings như lỗi đoạn trích về sản phẩm như:  “offers”, “review” hoặc “aggregateRating”,  “price” hoặc “priceSpecification.price”, Trường “aggregateRating” bị thiếu, Trường “review” bị thiếu, Phải chỉ định “priceCurrency” hoặc “priceSpecification.priceCurrency” (nằm trong “offers”), Trường “priceValidUntil” bị thiếu (nằm trong “offers”), Trường “availability” bị thiếu (nằm trong “offers”) cũng như lỗi Trang thông tin của người bán như: Phải chỉ định “price” hoặc “priceSpecification” (nằm trong “offers”), Trường “hasMerchantReturnPolicy” bị thiếu (nằm trong “offers”), Trường “shippingDetails” bị thiếu (nằm trong “offers”), Trường “availability” bị thiếu (nằm trong “offers”), Chiều dài chuỗi trong trường “description” không hợp lệ. Vậy khi gặp những lỗi trên chúng ta sẽ xử lý khắc phục như thế nào để website được tối ưu? Xem ngay trong bài viết sau đây.

Vì sao cần sửa lỗi Product Snippets & Merchant listings trong Google Search Console?

Việc sửa lỗi Product Snippets và Merchant listings trong Google Search Console là bước quan trọng để tối ưu hiệu quả hiển thị sản phẩm trên kết quả tìm kiếm và cải thiện hiệu suất SEO tổng thể.

Thứ nhất, đảm bảo dữ liệu có cấu trúc hoạt động đúng chuẩn. Product Snippets sử dụng schema markup để Google hiểu rõ thông tin sản phẩm như giá, đánh giá, tình trạng còn hàng. Khi xuất hiện lỗi, Google có thể bỏ qua dữ liệu này, khiến trang không hiển thị rich results hấp dẫn, làm giảm khả năng thu hút người dùng.

Thứ hai, tăng tỷ lệ nhấp (CTR) trên SERP. Merchant listings và Product Snippets giúp sản phẩm xuất hiện nổi bật với thông tin trực quan. Nếu lỗi schema tồn tại, trang web mất lợi thế cạnh tranh vì kết quả hiển thị chỉ là tiêu đề và mô tả thông thường.

Thứ ba, tránh ảnh hưởng tiêu cực đến độ tin cậy website. Các lỗi như thiếu trường giá, thiếu thông tin đánh giá hoặc sai định dạng dữ liệu có thể khiến Google đánh giá trang chưa tối ưu về kỹ thuật, ảnh hưởng đến khả năng hiển thị trong tab mua sắm hoặc kết quả nâng cao.

Thứ tư, hỗ trợ chiến lược SEO thương mại điện tử dài hạn. Việc sửa lỗi giúp Google cập nhật chính xác thông tin sản phẩm, đồng bộ với Merchant Center và cải thiện khả năng xuất hiện trong các tính năng tìm kiếm mua sắm mới.

Thứ năm, tối ưu hiệu suất thu thập dữ liệu và index. Khi schema đúng chuẩn, Googlebot dễ hiểu nội dung hơn, từ đó tăng cơ hội hiển thị sản phẩm trong nhiều định dạng tìm kiếm khác nhau.

Tóm lại, việc xử lý lỗi Product Snippets và Merchant listings không chỉ là sửa lỗi kỹ thuật mà còn là bước tối ưu quan trọng giúp nâng cao khả năng hiển thị, tăng CTR và cải thiện hiệu quả SEO cho các website bán hàng.

Cách khắc phục và sửa lỗi Product Snippets

Product Snippets là gì?

Product Snippets là dạng kết quả tìm kiếm nâng cao (rich results) hiển thị thông tin chi tiết của sản phẩm ngay trên trang Google, giúp người dùng nhìn thấy giá, đánh giá sao, tình trạng còn hàng hoặc mô tả ngắn mà không cần mở trang web. Những dữ liệu này được Google đọc thông qua schema markup (dữ liệu có cấu trúc) được cài đặt trong website.

Về bản chất, Product Snippets là một phần của hệ thống hiển thị kết quả nâng cao dựa trên Structured Data, cho phép công cụ tìm kiếm hiểu rõ nội dung sản phẩm và trình bày trực quan hơn trên SERP.

Product Snippets thường hiển thị gì?

  • Tên sản phẩm

  • Giá bán hoặc khoảng giá

  • Đánh giá sao và số lượng review

  • Tình trạng còn hàng

  • Thương hiệu hoặc nhà sản xuất

Product Snippets hoạt động như thế nào?

Website cần chèn dữ liệu cấu trúc theo chuẩn Product schema. Sau khi Google thu thập dữ liệu, thông tin sẽ được xác thực và có thể hiển thị dưới dạng rich result trong kết quả tìm kiếm hoặc trong báo cáo của Google Search Console.

Vì sao Product Snippets quan trọng trong SEO?

  • Giúp kết quả tìm kiếm nổi bật hơn so với link thông thường

  • Tăng tỷ lệ nhấp nhờ thông tin trực quan

  • Hỗ trợ chiến lược SEO cho website bán hàng hoặc giới thiệu sản phẩm

Hiểu đơn giản, Product Snippets chính là cách biến một kết quả tìm kiếm bình thường thành một “thẻ sản phẩm thu nhỏ”, giúp người dùng nhanh chóng đánh giá trước khi truy cập trang.

Hướng dẫn khắc phục và sửa lỗi Product Snippets

Thông báo từ Google Search Console cho biết dữ liệu Schema sản phẩm chỉ được xem là hợp lệ khi bạn khai báo tối thiểu một trong ba thuộc tính quan trọng gồm “offers” đại diện cho thông tin mua hàng, “reviews” thể hiện các nhận xét của người dùng hoặc “aggregateRating” phản ánh điểm đánh giá tổng hợp. Nếu thiếu các trường này, cấu trúc dữ liệu sản phẩm sẽ không đáp ứng tiêu chuẩn của Google, khiến nội dung khó được hiển thị dưới dạng kết quả nâng cao và làm giảm hiệu quả hiển thị trên trang tìm kiếm.

Các lỗi Product Snippets
Các lỗi Product Snippets

Các thông báo lỗi này bao gồm các lỗi: Either “offers”, “review”, or “aggregateRating” should be specified, Either “price” or “priceSpecification.price” should be specified (in “offers”), Missing field “aggregateRating”, Missing field “review”, Either “priceCurrency” or “priceSpecification.priceCurrency” should be specified (in “offers”), Missing field “priceValidUntil” (in “offers”), Missing field “availability” (in “offers”).

Để khắc phục tất cả những lỗi trên, chúng ta làm như sau: 

Thêm vào trong file functions.php (hình minh họa bên dưới) của giao diện đoạn code sau nếu dùng phiên bản Rank Math bản miễn phí:

Hướng dẫn khắc phục và sửa lỗi Product Snippets

//Khắc phục lỗi thiếu đánh giá trên Schema sản phẩm (Rank Math)
function fixschema_update_missing_product_schema( $entity ) {
$stampedDBData = get_post_meta(get_queried_object_id(), ‘stamped_io_product_reviews_new’, true);

if (isset($stampedDBData) && $stampedDBData[‘count’] > 0 ) {
$entity[‘aggregateRating’][‘@type’] = “AggregateRating”;
$entity[‘aggregateRating’][‘ratingValue’] = $stampedDBData[‘rating’];
$entity[‘aggregateRating’][‘ratingCount’] = $stampedDBData[‘count’];
} else {
$entity[‘aggregateRating’] = [
‘@type’ => ‘AggregateRating’,
‘ratingValue’ => ‘5’,
‘ratingCount’ => 0
];
}
return $entity;
}

add_filter( ‘rank_math/snippet/rich_snippet_product_entity’, ‘fixschema_update_missing_product_schema’);

Nếu bạn sử dụng bản Rankmath Pro có phí thì thêm đoạn sau:
//Fix RankMath missing `AggregateRating` on product category schema
add_filter(‘rank_math/json_ld’, ‘fixschema_product_rich_snippet_schema’, 100);
function fixschema_product_rich_snippet_schema( $data ) {
if ( !is_tax( ‘product_cat’ ) ) {
return $data;
}

if ( isset( $data[‘ProductsPage’]) ) {
$product_schemas = array_map(function($product) {
if ( empty($product[‘aggregateRating’] ) ) {
$aggregateRating = [
‘@type’ => ‘AggregateRating’,
‘ratingValue’ => 5,
‘ratingCount’ => 1
];

$product[‘aggregateRating’] = $aggregateRating;
}

return $product;
}, $data[‘ProductsPage’][‘@graph’] );

$data[‘ProductsPage’][‘@graph’] = $product_schemas;
}

return $data;
}

Sau khi thành công, bạn sẽ được kết quả như hình sau:

Kết quả sau khi Hướng dẫn khắc phục và sửa lỗi Product Snippets
Kết quả sau khi Hướng dẫn khắc phục và sửa lỗi Product Snippets

Cách khắc phục và sửa lỗi Merchant listings

Merchant listings trong Google Search Console là báo cáo hiển thị tình trạng dữ liệu sản phẩm liên quan đến mua sắm trực tuyến, giúp bạn kiểm tra xem thông tin sản phẩm trên website có đủ điều kiện xuất hiện trong các tính năng mua hàng của Google hay không. Đây là phần đánh giá dữ liệu có cấu trúc dành cho website thương mại điện tử, đặc biệt liên quan đến giá bán, tình trạng hàng, vận chuyển và chính sách bán hàng.

Cách khắc phục và sửa lỗi Merchant listings

Merchant listings dùng để làm gì?

  • Kiểm tra lỗi dữ liệu sản phẩm ảnh hưởng đến hiển thị trên Google Shopping

  • Xác nhận Google có hiểu đúng thông tin bán hàng trên website

  • Hỗ trợ tối ưu khả năng xuất hiện trong kết quả mua sắm miễn phí

Merchant listings khác gì Product Snippets?

  • Product Snippets tập trung vào hiển thị rich result ngay trên trang tìm kiếm

  • Merchant listings liên quan nhiều hơn đến trải nghiệm mua sắm và dữ liệu thương mại

Vì sao báo cáo Merchant listings quan trọng?

  • Giúp phát hiện thiếu dữ liệu như giá, tình trạng còn hàng hoặc thông tin vận chuyển

  • Tăng khả năng hiển thị sản phẩm trong hệ sinh thái tìm kiếm mua sắm của Google

  • Hỗ trợ tối ưu SEO cho website bán sản phẩm lâu dài

Hiểu đơn giản, Merchant listings là công cụ kiểm tra “sức khỏe dữ liệu bán hàng”, giúp đảm bảo sản phẩm của bạn đủ điều kiện xuất hiện trong các định dạng tìm kiếm thương mại của Google.

Hướng dẫn khắc phục và sửa lỗi Merchant listings

Nếu Google Search Console của bạn đang có những thông báo lỗi như: hasMerchantReturnPolicy và shippingDetails trong Merchant listings, bạn có thể làm theo hướng dẫn sau đây, đảm bảo 100% thành công tuyệt đối:

Tương tự cách sửa lỗi như trên, bạn vào file functions.php và copy đoạn code sau dán vào:
/*
* Sửa lỗi hasMerchantReturnPolicy và shippingDetails
* Author: Famemedia.vn
* */
add_filter( ‘woocommerce_structured_data_product_offer’, ‘wpseovn_woocommerce_structured_data_product_offer’ );
add_filter( ‘wpseo_schema_product’, ‘wpseovn_wpseo_schema_product’ );
add_filter( ‘rank_math/snippet/rich_snippet_product_entity’, ‘wpseovn_rich_snippet_product_entity’ );
add_filter( ‘wp_schema_pro_schema_product’, ‘wpseovn_wp_schema_pro_schema_product’ );
function get_hasMerchantReturnPolicy(){
return ‘{
“@type”: “MerchantReturnPolicy”,
“applicableCountry”: “vi”,
“returnPolicyCategory”: “https://schema.org/MerchantReturnFiniteReturnWindow”,
“merchantReturnDays”: “7”,
“returnMethod”: “https://schema.org/ReturnByMail”,
“returnFees”: “https://schema.org/FreeReturn”
}’;
}
function get_shippingDetails(){
return ‘{
“@type”: “OfferShippingDetails”,
“shippingRate”: {
“@type”: “MonetaryAmount”,
“value”: “0”,
“currency”: “VND”
},
“deliveryTime”: {
“@type”: “ShippingDeliveryTime”,
“businessDays”: {
“@type”: “OpeningHoursSpecification”,
“dayOfWeek”: [
“https://schema.org/Monday”,
“https://schema.org/Tuesday”,
“https://schema.org/Wednesday”,
“https://schema.org/Thursday”,
“https://schema.org/Friday”
]
},
“handlingTime”: {
“@type”: “QuantitativeValue”,
“minValue”: “0”,
“maxValue”: “3”,
“samedaydelivery” : “Yes”,
“unitCode”: “DAY”

},
“transitTime”: {
“@type”: “QuantitativeValue”,
“minValue”: “0”,
“maxValue”: “3”,
“samedaydelivery” : “Yes”,
“unitCode”: “DAY”
}
},
“shippingDestination”: [
{
“@type”: “DefinedRegion”,
“addressCountry”: “VN”,
“addressRegion”: [“VN”]
}
]
}’;
}
function wpseovn_wpseo_schema_product($data){
if(isset($data[‘offers’])){
$hasMerchantReturnPolicy = get_hasMerchantReturnPolicy();
$shippingDetails = get_shippingDetails();
foreach ($data[‘offers’] as $key => $offer){
if(!isset($offers[‘hasMerchantReturnPolicy’]) && $hasMerchantReturnPolicy){
$data[‘offers’][$key][‘hasMerchantReturnPolicy’] = json_decode($hasMerchantReturnPolicy, true);
}
if(!isset($offers[‘shippingDetails’]) && $shippingDetails){
$data[‘offers’][$key][‘shippingDetails’] = json_decode($shippingDetails, true);
}
}
}
return $data;
}
function wpseovn_rich_snippet_product_entity($entity){
global $product;
if(!is_singular(‘product’) || !$product || is_wp_error($product)) return $entity;
$hasMerchantReturnPolicy = get_hasMerchantReturnPolicy();
$shippingDetails = get_shippingDetails();
if(!isset($entity[‘offers’][‘hasMerchantReturnPolicy’]) && $hasMerchantReturnPolicy){
$entity[‘offers’][‘hasMerchantReturnPolicy’] = json_decode($hasMerchantReturnPolicy, true);
}
if(!isset($entity[‘offers’][‘shippingDetails’]) && $shippingDetails){
$entity[‘offers’][‘shippingDetails’] = json_decode($shippingDetails, true);
}
return $entity;
}
function wpseovn_wp_schema_pro_schema_product($schema){
if(isset($schema[‘offers’]) && apply_filters( ‘wp_schema_pro_remove_product_offers’, true )) {
$hasMerchantReturnPolicy = get_hasMerchantReturnPolicy();
$shippingDetails = get_shippingDetails();
if (!isset($schema[‘offers’][‘hasMerchantReturnPolicy’]) && $hasMerchantReturnPolicy) {
$schema[‘offers’][‘hasMerchantReturnPolicy’] = json_decode($hasMerchantReturnPolicy, true);
}
if (!isset($schema[‘offers’][‘shippingDetails’]) && $shippingDetails) {
$schema[‘offers’][‘shippingDetails’] = json_decode($shippingDetails, true);
}
}
return $schema;
}
function wpseovn_woocommerce_structured_data_product_offer($offers){
$hasMerchantReturnPolicy = get_hasMerchantReturnPolicy();
$shippingDetails = get_shippingDetails();
if(!isset($offers[‘hasMerchantReturnPolicy’]) && $hasMerchantReturnPolicy){
$offers[‘hasMerchantReturnPolicy’] = json_decode($hasMerchantReturnPolicy, true);
}
if(!isset($offers[‘shippingDetails’]) && $shippingDetails){
$offers[‘shippingDetails’] = json_decode($shippingDetails, true);
}
return $offers;
}

Sau khi đã dán đoạn code vào file, bạn bấm lưu lại và sau đó vào GSC để xác thực từng mục lỗi nhé. 

Vậy là chúng ta đã hoàn thành xong việc sửa lỗi, khắc phục tất cả các lỗi về “offers”, “review” hoặc “aggregateRating”,  “price” hoặc “priceSpecification.price”, Trường “aggregateRating” bị thiếu, Trường “review” bị thiếu, Phải chỉ định “priceCurrency” hoặc “priceSpecification.priceCurrency” (nằm trong “offers”), Trường “priceValidUntil” bị thiếu (nằm trong “offers”), Trường “availability” bị thiếu (nằm trong “offers”) cũng như lỗi Trang thông tin của người bán như: Phải chỉ định “price” hoặc “priceSpecification” (nằm trong “offers”), Trường “hasMerchantReturnPolicy” bị thiếu (nằm trong “offers”), Trường “shippingDetails” bị thiếu (nằm trong “offers”), Trường “availability” bị thiếu (nằm trong “offers”), Chiều dài chuỗi trong trường “description” không hợp lệ. 

Nếu bạn thấy bài viết này hữu ích, hãy share giúp mình nhé

5/5 - (4 bình chọn)