Các bạn khi sử dụng woocommer để đăng săn phẩm bán hàng thì sẽ nhận các thông báo lỗi trên Google Search Console. Cụ thể là thuộc tính hasMerchantReturnPolicy và shippingDetails trong schema offer của sản phẩm. Tuy đây không phải là yêu cầu bắt buộc nhưng gây cảnh báo khá khó chịu. Sau đây HTK sẽ hướng dẫn bạn cách xử lý.
Cách sửa lỗi hasMerchantReturnPolicy và shippingDetails cho Woo
Chèn code đoạn code dưới đây vào wp-content/themes/{your-theme}/functions.php nhé
add_filter( 'woocommerce_structured_data_product_offer', 'htk_woocommerce_structured_data_product_offer' ); add_filter( 'wpseo_schema_product', 'htk_wpseo_schema_product' ); add_filter( 'rank_math/snippet/rich_snippet_product_entity', 'htk_rich_snippet_product_entity' ); add_filter( 'wp_schema_pro_schema_product', 'htk_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 htk_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 htk_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 htk_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 htk_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; }
Trong đó có các thông số bạn cần thay đổi cho phù hợp với trang web của bạn nhé:
- Trong hàm get_hasMerchantReturnPolicy:
merchantReturnDays: là số ngày đổi trả hàng
returnFees: Phí đổi trả
returnMethod: Phương thức đổi trả - Trong hàm get_shippingDetails có:
shippingRate > value: là giá tiền ship
shippingRate > currency: đơn vị tiền ship
deliveryTime: Các ngày vận chuyển sẽ hoạt động
shippingDestination: Quốc gia giao hàng
Sửa lỗi hasMerchantReturnPolicy và shippingDetails dùng plugin
Ngoài cách trên bạn cũng có thể sử dụng plugin Schema & Structured Data for WP & AMP để xử lý lỗi trên nhé
Chúc các bạn thực hiện thành công.