Выпадающие из-за отсутствия вариации продукта (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

Что я делаю неправильно?

Ответы на вопрос(2)

Ваш ответ на вопрос