رفع خطای اسکیما محصولات ووکامرس در افزونه RankMath

اگر از افزونه رنک مث برای سئو سایت فروشگاهی ووکامرس خود استفاده میکنید احتمالا در گوگل سرچ کنسول با خطاهای اسکیما مواجه خواهید شد. البته توجه داشته باشید که این اخطار و خطا ها تقسیر افزونه رنک مث نیست. مشکل آن جاست که شما فیلد های مربوط به این اطلاعات را در صفحه محصولاتتان کامل نکردید که افزونه رنک مث آن اطلاعات را دریافت و به شکل اسکیما استاندارد به ربات گوگل نمایش دهد.

دو راه حل برای این مشکل وجود دارد. یا تمام محصولات را ویرایش کرده و اطلاعات لازم را فراهم کنید ( که گاهی اصلا فروشگاه شما یا محصول شما آن اطلاعات را ندارد ) یا با استفاده از کدی که در ادامه قرار دادیم اطلاعات اسکیما محصولات را اصلاح کنید تا مقادیر پیشفرض و ساختی به جای آنها به گوگل ارسال شوند و در نهایت خطا ها و اخطار های گوگل سرچ کنسول شما حل شوند.

این کد برای رفع خطا های زیر کاربرد دارد :

  • Invalid ISO 4217 currency code (in “offers”)
  • Date/time not in ISO 8601 format in field “priceValidUntil” (in “offers”)
  • Missing field “priceValidUntil” (in “offers”)
  • Missing field “priceCurrency” (in “offers”)
  • Missing field “price” (in “offers”)
  • Missing field “sku”
  • No global identifier provided (e.g., gtin, brand)
  • Missing field “brand”

خطا های زیر توسط این کد حل نمیشوند و روش حل آنها ارسال یک نظر ساختگی به صفحه محصولات است :

  • Either “offers”, “review”, or “aggregateRating” should be specified
  • Missing field “aggregateRating”
  • Missing field “review”

برای رفع این مشکل می‌توانید کد زیر را انتهای فایل فانکشن قالب ( functions.php ) خود قرار دهید:

/*
* Fix RankMath Schema
* Mahdi Jafarzadeh
* https://www.wpwm.ir/
* */
add_filter( "rank_math/snippet/rich_snippet_product_entity", function( $entity ) {
global $product;
$id = get_the_ID();
if(get_woocommerce_currency() == 'IRT'){
$entity['offers']['price'] = $product->get_price()*'10';
$entity['offers']['priceCurrency'] = 'IRR';
}
if (!empty($product->get_date_on_sale_to())) {
$entity['offers']['priceValidUntil'] = date_i18n('Y-m-d', strtotime($product->get_date_on_sale_to()));
} else {
$entity['offers']['priceValidUntil'] = date('Y-12-31', time() + YEAR_IN_SECONDS);
}
$entity['sku'] = $id;
$entity['mpn'] = $id;
return $entity;
});

 

توضیح کد :

در خط 9 بررسی میکنیم که آیا واحد پول ووکامرس تومان یا ریال قرار گرفته است. در صورتی که واحد تومان باشد در ادامه مبلغ را در 10 ضرب کرده و واحد را به ریال تغییر می دهیم.

در خط 13 بررسی میکنیم آیا محصول در تخفیف است یا خیر که در این صورت زمان پایان برای اعتبار قیمت را به صورت ساختگی اعمال میکنیم.

در خط 18 و 19 SKU و MPN را برابر با ID نوشته محصول قرار میدهیم که برای هر محصول یکتا باشد. شما میتوانید پیشوند یا پسوند برای آن وارد کنید.

نکته مهم :

این کد به صورت پیشفرض برای سایتی نوشته که هیچ کدام از این اطلاعات در محصولات وارد نشده اند. اگر در فروشگاه شما بعضی از این اطلاعات به شکل صحیح برای محصولات وارد شده باید قسمت مربوط به همان مورد را اصلاح و یا حذف نمایید.

برای سایت هایی که چند واحد پولی دارند یا از حالت محصول متغیر استفاده میکنند احتمالا نیاز به بررسی کد و تغییر آن باشد. بنابراین پس از اعمال کد نیز حتما اسکیما خروجی را بررسی و از عملکرد صحیح آن اطمینان حاصل کنید.

اگر سوالی درباره عملکرد این کد دارید لطفا در قسمت نظرات بپرسید تا پاسخگوی شما باشیم.

بدون دیدگاه

کد های مشابه با آنچه دیدید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed