Выпадающие из-за отсутствия вариации продукта (WooCommerce)
[РЕДАКТИРОВАТЬ: фактически работает при добавлении кода в functions.php и пропуская изменения в файлах кода WC. Важно: он работает только при наличии ОДНОГО атрибута. Однако, когда есть 2 атрибута (например, размер и цвет), он не работает, потому что речь идет не о вариациях, которых нет в наличии, а о комбинациях вариаций, и, действительно, WooCommerce в этом обычном сценарии совершенно невежественен. Обратите внимание, что в настоящее время, похоже, нет доступных плагинов для решения этой очевидной проблемы. Большой.]
Начиная с версии 2.0, WooCommerce скрывает варианты товаров, которых нет в наличии (очевидная проблема, поскольку у клиентов тогда нет возможности узнать об их существовании), или отображает их так же, как варианты товаров в наличии (также проблема, потому что клиенты систематически разочаровываются, узнав о них). вариация отсутствуетпосле нажав на покупку).
Эта тема включает в себя решение, чтобы затенить отклонения от товарного ассортимента:
Предположительно будет добавлено кfunctions.php
:
add_filter( 'woocommerce_variation_is_active', 'grey_out_variations_when_out_of_stock', 10, 3 );
function grey_out_variations_when_out_of_stock( $grey_out, $variation_id, $id ) {
$variation = get_product( $variation_id );
if ( ! $variation->is_in_stock() )
return false;
return true;
}
Быть сделано вplugins/woocommerce/includes/class-wc-product-variation.php
:
Изменить:
return apply_filters( 'woocommerce_variation_is_active', true, $this->variation_id, $this->id );
чтобы:
return apply_filters( 'woocommerce_variation_is_active', true, $this );
Также измените:
return apply_filters( 'woocommerce_variation_is_visible', $visible, $this->variation_id, $this->id );
чтобы:
return apply_filters( 'woocommerce_variation_is_visible', $visible, $this->variation_id, $this->id, $this );
Тем не менее, хотя, как сообщается, это работает, в моем случае отклонения в наличии на складе отображаются так же, как и другие, и у меня также есть предупреждение:
Warning: Missing argument 3 for grey_out_variations_when_out_of_stock() in ...\functions.php on line 600
Что я делаю неправильно?