Я пытался выяснить, как убрать боковую панель магазина со страниц моего отдельного продукта. Я пробовал различные варианты для этого. Я использую двадцать семнадцатую тему.
Сначала я попробовал этот фрагмент из Business Bloommer в моем файле дочерних функций.
add_action( 'wp', 'bbloomer_remove_sidebar_product_pages' );
function bbloomer_remove_sidebar_product_pages() {
if ( is_product() ) {
remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
}
}
Но это не сработало. Впоследствии прочитал ветку от другого пользователя, в которой говорилось, что сниппет не работает для двадцать семнадцатой темы.
Затем я попытался переопределить шаблон woo commerce woocommerce / templates / singleproduct.php, создав woocommerce / singleproduct.php в своей дочерней теме и удалив следующее:
<?php
/**
* woocommerce_sidebar hook.
*
* @hooked woocommerce_get_sidebar - 10
*/
do_action( 'woocommerce_sidebar' );
?>
Это тоже не сработало. Я что-то упускаю здесь очевидное? Очень благодарен, если у кого-то есть понимание того, что я делаю неправильно. Большое спасибо.
Для темы «Двадцать семнадцать» в Woocommerce есть специальный класс WC_Twenty_Seventeen
что обрабатывать боковую панель.
Поэтому используйте следующее, чтобы удалить боковую панель со страниц одного продукта:
remove_action( 'woocommerce_after_main_content', array( 'WC_Twenty_Seventeen', 'output_content_wrapper_end' ), 10 );
add_action( 'woocommerce_after_main_content', 'remove_sidebar_from_output_content_wrapper_end', 10 );
function remove_sidebar_from_output_content_wrapper_end() {
// Only for single product pages
if( is_product() ) {
echo '</main></div></div>';
} else {
echo '</main></div>';
get_sidebar();
echo '</div>';
}
}
Код помещается в файл function.php активной дочерней темы (или активной темы). Проверено и работает.
Но вам придется добавить некоторые правила CSS в ваш styles.css
файл, что-то вроде:
.has-sidebar.single-product.woocommerce-page:not(.error404) #primary {
width: 100% !important;
float: none !important;
}
Других решений пока нет …