اسکیمای ساختاریافته محصول ووکامرس (Product Schema JSON-LD)
با خواندن شیء محصول توسط `wc_get_product` اسکیمای کامل قیمت و موجودی را با فرمت JSON-LD تزریق کنید.
مشخصات فنی و شناسنامه کد (Code Information)
بازبینی: 1405/06/29<?php
/**
* تولید اسکیمای جامع و اختصاصی محصول ووکامرس (Product Schema) سازگار با HPOS
*/
function bisco_output_product_schema() {
if ( ! function_exists( 'is_product' ) || ! is_product() ) {
return;
}
$product = wc_get_product( get_the_ID() );
if ( ! $product ) {
return;
}
$image_id = $product->get_image_id();
$image_url = $image_id ? wp_get_attachment_url( $image_id ) : home_url( '/placeholder.jpg' );
$schema = array(
'@context' => 'https://schema.org',
'@type' => 'Product',
'name' => esc_html( $product->get_name() ),
'image' => array( esc_url( $image_url ) ),
'description' => esc_html( wp_strip_all_tags( $product->get_short_description() ?: $product->get_description() ) ),
'sku' => esc_html( $product->get_sku() ?: 'SKU-' . $product->get_id() ),
'offers' => array(
'@type' => 'Offer',
'url' => esc_url( get_permalink( $product->get_id() ) ),
'priceCurrency' => get_woocommerce_currency(),
'price' => $product->get_price() ?: '0',
'priceValidUntil' => gmdate( 'Y-12-31', strtotime( '+1 year' ) ),
'availability' => $product->is_in_stock() ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock',
'itemCondition' => 'https://schema.org/NewCondition',
),
);
// افزودن امتیاز خریداران در صورت وجود
if ( $product->get_rating_count() > 0 ) {
$schema['aggregateRating'] = array(
'@type' => 'AggregateRating',
'ratingValue' => $product->get_average_rating(),
'reviewCount' => $product->get_rating_count(),
);
}
echo '<script type="application/ld+json">' . wp_json_encode( $schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES ) . '</script>' . "
";
}
add_action( 'wp_head', 'bisco_output_product_schema', 5 );
کد را کجا قرار دهیم؟ (Placement Guide)
کد را در functions.php ذخیره کنید.
این کد چگونه کار میکند؟ (How it Works)
از متدهای شیء بومی ووکامرس (مانند get_price, is_in_stock) استفاده کرده و دادههای دقیق تجاری را به موتورهای جستجو تحویل میدهد.
چه زمانی از این کد استفاده کنیم؟ (Use Cases)
در تمام صفحات محصول تکی ووکامرس برای فعال کردن نتایج ستارهدار، قیمت و برچسب موجودی در گوگل.
چه زمانی نباید از این کد استفاده کنیم؟ (Anti-patterns)
در صفحات دستهبندی یا تسویه حساب.
پیشنیازهای اجرا
ووکامرس ۳.۰ به بالا با فعال بودن قیمت و وضعیت انبار.
نحوه تست و اطمینان از عملکرد
صفحه یک محصول را در Google Rich Results Test بررسی کنید؛ وضعیت Product، Price و InStock تایید خواهند شد.
نحوه بازگردانی سریع (Rollback)
کد را از functions.php بردارید.
خطاهای رایج و راهحل رفع
خالی بودن SKU یا Price که گوگل برای آنها هشدار نمایش میدهد (کد ما در صورت خالی بودن مقادیر پیشفرض معتبر جایگزین میکند).
ملاحظات و نکات امنیتی
پاکسازی دادههای خروجی و عدم امکان تزریق کد.
تاثیر بر سرعت و پرفورمنس
کاملاً بهینه و استفاده از کش داخلی ووکامرس برای خواندن شیء محصول.