add_filter( 'wpseo_schema_offer', 'add_availability_to_yoast_schema_offer', 10, 2 );
add_filter( 'wpseo_schema_productgroup_offer', 'add_availability_to_yoast_schema_offer', 10, 2); // برای ProductGroup (محصولات متغیر)
function add_availability_to_yoast_schema_offer( $offer_data, $product ) {
// $product ممکن است WC_Product_Variation یا WC_Product باشد
// $offer_data آرایه دادههای offer است
if ( ! $product ) {
// سعی کنید محصول را از داده های پیشنهاد دریافت کنید، اگر $product در دسترس نیست
if ( isset( $offer_data['sku'] ) ) {
$product_id = wc_get_product_id_by_sku( $offer_data['sku'] );
if ( $product_id ) {
$product = wc_get_product( $product_id );
}
}
}
if ( $product instanceof WC_Product_Variation || $product instanceof WC_Product_Simple ) {
// فقط اگر MPN در دادههای پیشنهاد وجود دارد، availability را اضافه یا بهروزرسانی کنید
// یا اگر میخواهید برای همه پیشنهادات این فیلد را اضافه کنید، این شرط را بردارید.
if ( ! empty( $offer_data['mpn'] ) || empty( $offer_data['availability'] ) ) { // اگر mpn دارد یا availability ندارد
if ( $product->is_in_stock() ) {
$offer_data['availability'] = 'https://schema.org/InStock';
} elseif ( $product->is_on_backorder() ) {
$offer_data['availability'] = 'https://schema.org/PreOrder';
} else {
$offer_data['availability'] = 'https://schema.org/OutOfStock';
}
}
}
return $offer_data;
}