(WooCommerce) Удаление боковой панели только на странице отдельного товара
Я создаю тему и не хочу отображать боковую панель на странице отдельного товара.
Следуя рекомендациям WooCommerce, я сделал копию папки "templates" (из плагина woocommerce) и установил её в mytheme/templates, изменив название папки на "woocommerce". В корне моей темы я создал файл sidebar-shop.php.
На данный момент у меня боковая панель отображается как на странице магазина, так и на странице отдельного товара. Я пытался удалить do_action('woocommerce_sidebar');
из woocommerce/single-product.php, а также пытался создать условие в woocommerce/shop/sidebar.php, что-то вроде:
if (!is_page('single-product') {
get_sidebar('shop');
}
но боковая панель остаётся.
Есть ли рабочий способ удалить боковую панель только на странице отдельного товара?
Условный тег для отдельных товаров — это 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');
}
}
Вы также можете изменить макет страницы товара на полную ширину, чтобы убрать промежуток и уменьшить ширину области контента, используя пользовательский класс body, который также можно создать условно.
Условные теги WooCommerce http://docs.woothemes.com/document/conditional-tags/

is_product()
— это просто обёртка для is_singular('product')
. Так что оба варианта работают одинаково.

Вам нужно будет добавить slug страницы товара: if ( is_product('t-shirt') ) {

А как быть, если я хочу удалить это для всех товаров? То есть без указания конкретного ID

Абхик, код выглядел многообещающе, но тоже не сработал. Интересно, является ли "product" реальным ID страницы single-product. В любом случае, спасибо.

function remove_storefront_sidebar() {
if ( is_product() ) {
remove_action( 'storefront_sidebar', 'storefront_get_sidebar', 10 );
}
}
add_action( 'get_header', 'remove_storefront_sidebar' );
Работает с последней версией WooCommerce 2.5.2 Также необходим CSS:
.single-product.right-sidebar .content-area {
float: none;
margin-right: 0;
width: 100%;
}
