Desactivar variaciones de productos agotados (WooCommerce)

[EDITAR: en realidad funciona al agregar el código en functions.php y omitir los cambios en los archivos de código WC. Importante: solo funciona cuando existe UN atributo. Sin embargo, cuando hay 2 atributos (tamaño y color, por ejemplo), entonces no funciona porque ya no se trata de variaciones agotadas, sino de combinaciones de variaciones, y de hecho WooCommerce no tiene ni idea en este escenario común. Tenga en cuenta que parece que actualmente no hay ningún complemento disponible para abordar este problema tan obvio. Excelente.]

Desde 2.0 WooCommerce oculta las variaciones de productos fuera de stock (un problema obvio ya que los clientes no tienen forma de saber acerca de su existencia) o las muestra como variaciones en existencia (también un problema porque los clientes están sistemáticamente decepcionados de descubrirlo la variación está agotadadespués haciendo clic en comprar).

Este hilo incluye una solución para atenuar las variaciones de producto agotado:

Presumiblemente para ser agregado afunctions.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;
}

Para hacerse enplugins/woocommerce/includes/class-wc-product-variation.php:

Cambio:

return apply_filters( 'woocommerce_variation_is_active', true, $this->variation_id, $this->id );

a:

return apply_filters( 'woocommerce_variation_is_active', true, $this );

También cambia:

return apply_filters( 'woocommerce_variation_is_visible', $visible, $this->variation_id, $this->id );

a:

return apply_filters( 'woocommerce_variation_is_visible', $visible, $this->variation_id, $this->id, $this );

Sin embargo, aunque según los informes funciona, en mi caso las variaciones agotadas se muestran igual que las demás y también tengo una advertencia:

Warning: Missing argument 3 for grey_out_variations_when_out_of_stock() in ...\functions.php on line 600

¿Qué estoy haciendo mal?

Respuestas a la pregunta(2)

Su respuesta a la pregunta