Come utilizzare woocommerce in modalità catalogo e far visualizzare il prezzo solo in una determinata categoria di prodotto
N
el 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_single_product_summary’, ‘woocommerce_template_single_add_to_cart’, 30 );
Dopodiché abbiamo creato questa funzione per far visualizzare il prezzo solo nella categoria ‘Outlet’
global $post;
$terms = wp_get_post_terms( $post->ID, ‘product_cat’ );
foreach ( $terms as $termItem ) {
$categories = $termItem->slug;
if ($categories != ‘outlet’){
remove_action( ‘woocommerce_after_shop_loop_item_title’, ‘woocommerce_template_loop_price’, 10 );
remove_action( ‘woocommerce_single_product_summary’, ‘woocommerce_template_single_price’, 10 );
}
}
} //end function
add_action(‘woocommerce_after_main_content’, ‘hide_price’);
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.
$custom_terms = get_the_terms(0, ‘product_cat’);
if ($custom_terms) {
foreach ($custom_terms as $custom_term) {
// Check if the parent category exists:
if( $custom_term->parent > 0 ) {
// Get the parent product category:
$parent = get_term( $custom_term->parent, ‘product_cat’ );
// Append the parent class:
if ( ! is_wp_error( $parent ) )
$classes[] = ‘esdata_’ . $parent->slug;
}
$classes[] = ‘esdata_’ . $custom_term->slug;
}
}
return $classes;
}
add_filter( ‘body_class’, ‘woo_custom_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:
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
See you soon!
Leave a Comment