Je crée un thème et je ne souhaite pas afficher la barre latérale sur la page d'un seul produit.
Suivant les recommandations de WooCommerce, j’ai fait une copie du dossier " templates " (sous le plugin woocommerce) et l’a installé sur mytheme/templates , en modifiant le nom du dossier en " woocommerce ". Sur la racine de mon thème, j'ai créé un fichier appelé sidebar-shop.php .
A présent, la barre latérale est affichée sur la page du magasin et sur la page du produit unique. J'ai essayé de supprimer do_action('woocommerce_sidebar');
de woocommerce/single-product.php et j'ai également essayé de créer une condition relative à woocomerce/shop/sidebar.php , quelque chose comme:
if (!is_page('single-product') {
get_sidebar('shop');
}
mais la barre latérale reste.
Existe-t-il une option opérationnelle permettant de supprimer uniquement la barre latérale d'un seul produit?
La balise conditionnelle pour un seul produit est 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');
}
}
Vous pouvez également modifier la mise en page de la page de produit en pleine largeur pour supprimer les espaces et réduire la largeur de la zone de contenu à l'aide d'une classe de corps personnalisée que vous pouvez également générer de manière conditionnelle.
Balises conditionnelles Woo Commerce http://docs.woothemes.com/document/conditional-tags/
Ici ça va ..
function remove_sidebar_shop() {
if ( is_singular('product') ) {
remove_action('woocommerce_sidebar', 'woocommerce_get_sidebar');
}
}
add_action('template_redirect', 'remove_sidebar_shop');
function remove_storefront_sidebar() {
if ( is_product() ) {
remove_action( 'storefront_sidebar', 'storefront_get_sidebar', 10 );
}
}
add_action( 'get_header', 'remove_storefront_sidebar' );
Il fonctionne avec la dernière version de woocommerce 2.5.2.
.single-product.right-sidebar .content-area {
float: none;
margin-right: 0;
width: 100%;
}