Premessa
Se gestisci prodotti in abbonamento con WooCommerce Subscriptions può capitare di dover aggiungere dei costi di attivazione su alcune tipologie di prodotto. Il problema in questo caso è che vengono visualizzati nel frontend anche questi costi in aggiunta a quelli della variazione/abbonamento, sia esso annuale, mensile ecc…
Soluzione
Nel caso specifico trattato abbiamo deciso di mostrare solamente il prezzo della variazione annuale, che era quello economicamente più conveniente. Il codice sottostante quindi ottiene l’attributo di default assegnato nelle variazioni, recupera tutte le variazioni e quando esegue il match va ad assegnare alla variabile $price, il solo prezzo della variante di default (che nel nostro caso era relativa appunto al piano “annuale”). Notare l’uso del filtro woocommerce_subscriptions_product_price_string al posto del classico woocommerce_variable_price_html in quanto si tratta di un prodotto variabile di tipo subscription e non di una variazione standard di WC.
add_filter('woocommerce_subscriptions_product_price_string', 'hw_custom_variable_price_display', 10, 2);
function hw_custom_variable_price_display($price, $product) {
// Verifica se il prodotto è una sottoscrizione variabile
if ($product->is_type('variable-subscription')) {
// Ottieni tutte le varianti del prodotto
$default_attributes = $product->get_default_attributes();
foreach ($product->get_available_variations() as $variation) {
$variation_product = wc_get_product($variation['variation_id']);
$variation_attributes = $variation_product->get_attributes();
// Verifica se la variante corrisponde agli attributi predefiniti
if ($variation_attributes == $default_attributes) {
// Ottieni il prezzo della variante di default
$price = $variation_product->get_price_html();
break;
}
}
}
return $price;
}