Похоже, вы близко, но объект $ product также должен быть включен в вашу функцию. Это второй параметр, который можно передать этому фильтру. Кроме того, вы хотите вернуть часть массива, которая отправляется в фильтр woocommerce_structured_data_product_offer
. Это будет $availability['availability']
, поскольку вы передаете переменную как $availability
function tt_WC_change_schema_availability( $availability, $product ) {
if ( is_product() && ! is_admin() ) {
$stock_status = $product->get_stock_status();
$output = 'OutOfStock'; // default, out of stock
if ($stock_status){
$output = 'InStock';
$qty = $product->get_stock_quantity();
if ( ! ($qty > 0) ) {
$output = 'PreOrder';
}
}
return $availability['availability'] = 'http://schema.org/' . $output;
}
}
add_filter( 'woocommerce_structured_data_product_offer', 'tt_WC_change_schema_availability' , 10, 2 );