WooCommerce è il plugin WordPress più diffuso per creare e-commerce, ma non sempre hai bisogno di vendere online. Molte aziende usano WooCommerce esclusivamente come catalogo prodotti: vogliono mostrare il listino, le schede prodotto, le immagini — senza permettere l’acquisto diretto, senza prezzi visibili, senza carrello.
È una scelta comune in diversi contesti: showroom che preferiscono trattare i prezzi offline, aziende B2B che riservano i listini agli agenti, produttori che vendono solo tramite distributori, o semplicemente chi vuole un catalogo digitale elegante senza gestire un e-commerce vero e proprio.
In questa guida vediamo come noi abbiamo configurato WooCommerce in modalità catalogo, con la possibilità di mostrare i prezzi solo in determinate categorie (esempio nella categoria “Outlet”). Il metodo richiede di intervenire sul file functions.php e sul CSS del tema, quindi è consigliato a chi ha familiarità con WordPress. Se preferisci non toccare il codice, in fondo all’articolo trovi come possiamo aiutarti.
Come utilizzare woocommerce in modalità catalogo e far visualizzare il prezzo solo in una determinata categoria di prodotto
Nel nostro ultimo progetto avevamo la necessità di utilizzare Woocommerce in modalità catalogo e solo in una determinata categoria avevamo bisogno di far visualizzare i prezzi dei prodotti.
Ci siamo mossi in questo modo
Prendiamo in considerazione due file in particolare: il file functions.php e il style.css
Nel file functions.php abbiamo aggiunto queste 2 righe di codice per nascondere il carrello e il bottone Add to cart:
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart' );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
Dopodiché abbiamo creato questa funzione per far visualizzare il prezzo solo nella categoria ‘Outlet’
function es_hide_price_except_outlet() {
if ( ! is_product() && ! is_shop() && ! is_product_category() ) {
return;
}
global $post;
$terms = get_the_terms( $post->ID, 'product_cat' );
$show_price = false;
if ( $terms && ! is_wp_error( $terms ) ) {
foreach ( $terms as $term ) {
if ( $term->slug === 'outlet' ) {
$show_price = true;
break;
}
}
}
if ( ! $show_price ) {
remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
}
}
add_action( 'woocommerce_before_main_content', 'es_hide_price_except_outlet' );
E abbiamo ultimato la modifica del file functions.php aggiungendo questa funzione che permette di inserire una classe, con il nome della categoria, nel tag body.
function es_taxonomy_in_body_class( $classes ) {
$custom_terms = get_the_terms( 0, 'product_cat' );
if ( $custom_terms && ! is_wp_error( $custom_terms ) ) {
foreach ( $custom_terms as $term ) {
if ( $term->parent > 0 ) {
$parent = get_term( $term->parent, 'product_cat' );
if ( ! is_wp_error( $parent ) ) {
$classes[] = 'esdata_' . $parent->slug;
}
}
$classes[] = 'esdata_' . $term->slug;
}
}
return $classes;
}
add_filter( 'body_class', 'es_taxonomy_in_body_class' );
Abbiamo fatto questo per poter gestire al meglio la visualizzazione del prezzo all’interno dei prodotti della categoria ‘Outlet’ anche tramite il css.
Passiamo a questo punto al nostro file style.css e aggiungiamo queste regole:
#cart > a > span.amount {
display: none;
}
div.deals-information > div.price{
display: none;
}
div.widget.widget-products.products > div > div > div:nth-child(2) > div.col-md-4.col-sm-12.shopcol.last.wow.fadeInUp.product-wrapper > div > div > div > div.price, span.woocommerce-Price-amount, .tzshop-wrap .product-grid ul.products li.tzShop-item .tzShop-item_inner .tzShop-item_image .tzProductSale{
display: none;
}
body.esdata_outlet span.woocommerce-Price-amount {
display: inline;
}
N.B. Fate attenzione che classi e id potrebbero cambiare da tema a tema
Domande frequenti sull’utilizzo di Woocommerce in modalità catalogo
Sì. WooCommerce può essere configurato per mostrare i prodotti senza permettere l’acquisto, nascondendo il carrello e i prezzi tramite codice nel functions.php o tramite plugin dedicati.
Il metodo più flessibile è rimuovere tramite PHP gli hook responsabili della visualizzazione del prezzo: woocommerce_template_loop_price per le pagine archivio e woocommerce_template_single_price per le singole schede prodotto. In alternativa si può usare CSS per nasconderli visivamente, ma il dato rimane nel codice HTML — meno sicuro se la riservatezza del prezzo è importante.
Si rimuovono gli hook woocommerce_template_loop_add_to_cart e woocommerce_template_single_add_to_cart dal functions.php. Questo elimina il bottone “Aggiungi al carrello” sia nelle pagine di archivio che nelle singole schede prodotto, senza disinstallare WooCommerce o modificare il database.
Sì, esistono plugin come “YITH WooCommerce Catalog Mode” o “ELEX WooCommerce Catalog Mode” che permettono di abilitare la modalità catalogo direttamente dal pannello di amministrazione. Sono una buona soluzione per chi non vuole intervenire sul codice, ma non ti permettono di intervenire solo su determinate pagine o categorie e aggiungono un’ulteriore dipendenza al sito che va mantenuta aggiornata.
Conclusione
Configurare WooCommerce in modalità catalogo richiede un intervento mirato sul codice, ma una volta impostato correttamente funziona in modo stabile e non appesantisce le performance del sito.
Se il tuo caso è più articolato — categorie multiple con logiche diverse, listini riservati per utenti registrati, o integrazioni con gestionali — il codice standard potrebbe non bastare e la soluzione va costruita su misura.
Lavoriamo con WooCommerce da anni e abbiamo gestito configurazioni di questo tipo per diversi clienti. Se vuoi evitare di mettere mano al codice o hai bisogno di una soluzione personalizzata, raccontaci il tuo progetto — valutiamo insieme la strada più efficiente.
Commit. Push. A presto.