Disabilita il pulsante "Aggiungi al carrello" quando il prodotto è esaurito
Voglio disabilitare il pulsante 'Aggiungi al carrello' quando il prodotto è esaurito utilizzando codice PHP o un'impostazione amministrativa di WooCommerce.

Ecco alcuni plugin che permettono di nascondere i pulsanti "Aggiungi al carrello" dalla vetrina e dalla pagina singola del prodotto in WooCommerce:
[ https://wordpress.org/plugins/hide-add-to-cart-button/ ]
[ https://wordpress.org/plugins/remove-add-to-cart-woocommerce/ ]
Questi plugin effettuano le seguenti operazioni:
1) Nascondono il pulsante Aggiungi al carrello dalla pagina singola del prodotto.
2) Nascondono il pulsante Aggiungi al carrello dalla pagina della categoria.
3) Nascondono il pulsante Aggiungi al carrello dalla homepage e da tutte le altre pagine.
Puoi anche nasconderlo aggiungendo la seguente funzione in functions.php:
/*
* Override tramite functions.php
**/
if (!function_exists('woocommerce_template_loop_add_to_cart')) {
function woocommerce_template_loop_add_to_cart() {
global $product;
if ( ! $product->is_in_stock() || ! $product->is_purchasable() ) return;
woocommerce_get_template('loop/add-to-cart.php');
}
}

Invece di sovrascrivere la funzione, sarebbe meglio gestire il filtro woocommerce_is_purchasable
.
add_filter( 'woocommerce_is_purchasable', 'vna_is_purchasable', 10, 2 );
function vna_is_purchasable( $purchasable, $product ){
return true || false; // a seconda della tua condizione
}

Mi sono imbattuto in questa domanda mentre aiutavo un amico. Non essendo uno sviluppatore WordPress, figuriamoci WooCommerce, sono comunque riuscito a ottenere qualcosa di funzionante senza scrivere alcun PHP, solo con CSS.
Sembra che WooCommerce faccia un buon lavoro nel "trasformare" molte proprietà del prodotto in classi CSS che vengono poi assegnate ai contenitori HTML. Non sono sicuro se sia legato al tema, ma nel mio caso ho ottenuto alcuni contenitori con la classe "instock" quando il prodotto era disponibile e "outofstock" quando il prodotto era... esaurito.
Quando l'ho notato, non ci ho messo molto a creare alcune regole CSS per:
- Nascondere il pulsante
- Mostrare un messaggio al suo posto, utilizzando pseudo-elementi CSS e content
- Rendere alcune parti della scheda prodotto semi-trasparenti in modo che sembrino più "inattive"
Non lo consiglierei per codice di produzione in una grande azienda, ma nel mio caso ha funzionato abbastanza bene. Ah, e funziona bene anche con prodotti che hanno variazioni, ottenendo la classe "outofstock" solo quando tutte le variazioni sono esaurite.
Non posterò alcun codice perché, come ho detto, non sono un esperto e quindi non posso dire se il mio HTML sia "generico WooCommerce" o legato al tema utilizzato o addirittura completamente personalizzato (di solito non sono io a creare e gestire il sito), ma penso comunque che possa essere d'aiuto come lo è stato per me.

Per rimuovere il pulsante "Aggiungi al carrello" da una pagina prodotto specifica, puoi aggiungere questo codice nel file functions.php (situato nella cartella del tema):
add_filter('woocommerce_is_purchasable', 'wpblog_specific_product');
function wpblog_specific_product($purchaseable_product_wpblog, $product) {
return ($product->id == specific_product_id (512) ? false : $purchaseable_product_wpblog);
}
Riferimento: https://www.wpblog.com/add-to-cart-button-in-woocommerce-store/
