(WooCommerce) Rimuovere la Sidebar solo nella pagina Singolo Prodotto
Sto creando un tema e non voglio visualizzare la sidebar nella pagina del singolo prodotto.
Seguendo le raccomandazioni di WooCommerce, ho fatto una copia della cartella "templates" (presente nel plugin woocommerce) e l'ho installata in mytheme/templates, rinominando la cartella in "woocommerce". Nella root del mio tema, ho creato un file chiamato sidebar-shop.php.
Al momento ho la sidebar visualizzata sia nella pagina shop che nella pagina del singolo prodotto. Ho provato a rimuovere do_action('woocommerce_sidebar');
da woocommerce/single-product.php e ho anche provato a creare una condizione in woocommerce/shop/sidebar.php, qualcosa del tipo:
if (!is_page('single-product') {
get_sidebar('shop');
}
ma la sidebar rimane.
C'è un'opzione funzionante per rimuovere la sidebar solo nella pagina del singolo prodotto?
Il tag condizionale per i singoli prodotti è is_product()
add_action('template_redirect', 'remove_sidebar_shop');
function remove_sidebar_shop() {
if ( is_product('add-page-i.d-here') ) {
remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar');
}
}
Potresti anche voler cambiare il layout di quella pagina prodotto in larghezza completa per rimuovere lo spazio vuoto e ridurre la larghezza dell'area dei contenuti utilizzando una classe personalizzata per il body che puoi generare anche in modo condizionale.
Tag condizionali di WooCommerce http://docs.woothemes.com/document/conditional-tags/

is_product()
è semplicemente un wrapper per is_singular('product')
. Quindi, entrambi funzionano esattamente allo stesso modo.

Dovresti aggiungere lo slug della pagina del prodotto singolo if ( is_product('t-shirt') ) {

E come faccio se voglio rimuoverlo per tutti i prodotti? Intendo, senza un ID specifico

Ecco qui..
// Rimuove la sidebar dalla pagina singola del prodotto
function remove_sidebar_shop() {
if ( is_singular('product') ) { // Verifica se è una pagina singola di prodotto
remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar'); // Rimuove l'azione della sidebar
}
}
// Aggiunge l'azione durante il reindirizzamento del template
add_action('template_redirect', 'remove_sidebar_shop');

Abhik, il codice sembrava promettente ma non ha funzionato comunque. Mi chiedo se "product" sia il vero ID della pagina single-product. Grazie comunque.

// Funzione per rimuovere la sidebar in Storefront nelle pagine prodotto
function remove_storefront_sidebar() {
if ( is_product() ) { // Verifica se è una pagina singola prodotto
remove_action( 'storefront_sidebar', 'storefront_get_sidebar', 10 ); // Rimuove la sidebar
}
}
// Aggiunge l'azione all'hook get_header
add_action( 'get_header', 'remove_storefront_sidebar' );
Funziona con l'ultima versione di WooCommerce 2.5.2 È necessario anche il seguente CSS:
/* Stile per la pagina prodotto con sidebar destra */
.single-product.right-sidebar .content-area {
float: none; /* Rimuove il float */
margin-right: 0; /* Azzera il margine destro */
width: 100%; /* Imposta la larghezza al 100% */
}
