web-dev-qa-db-fra.com

(WooCommerce) Supprimer la barre latérale uniquement sur la page Produit unique

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?

1
Rico Letterman

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/

1
Brad Dalton

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');
0
Abhik
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%;
}
0
Iggy