web-dev-qa-db-ja.com

(WooCommerce)単一商品ページでのみサイドバーを削除する

私はテーマを作成していますが、単一商品のページにサイドバーを表示したくありません。

WooCommerceの勧告に従って、 " templates "フォルダー(woocommerceプラグインの下)を作成して mytheme/templates にインストールし、フォルダーの名前を " woocommerce "に変更しました。テーマのルート上に、 sidebar-shop.php というファイルを作成しました。

これで、サイドバーがショップページと単一商品ページに表示されました。私はwoocommerce/single-product.phpからdo_action('woocommerce_sidebar');を削除しようとしました、そしてまた woocomerce/shop/sidebar.php のような条件付きを作成しようとしました:

if (!is_page('single-product') { 
    get_sidebar('shop'); 
}

しかしサイドバーは残ります。

単一の製品サイドバーだけを削除するための有効なオプションはありますか?

1
Rico Letterman

単一商品の条件付きタグは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');
    }
}

また、その商品ページのレイアウトを全幅に変更して、ギャップをなくし、条件付きで生成できるカスタムボディクラスを使用してコンテンツ領域の幅を減らすこともできます。

Woo Commerceコンディショナルタグ http://docs.woothemes.com/document/conditional-tags/ /

1
Brad Dalton

ここに行きます..

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' );

最新のwoocmerce 2.5.2でも動作します。CSSも必要です。

.single-product.right-sidebar .content-area {
  float: none;
  margin-right: 0;
  width: 100%;
}
0
Iggy