Удалить боковую панель в Twenty Seventeen из отдельных продуктов в Woocommerce - PullRequest
0 голосов
/ 28 октября 2018

Я пытался выяснить, как убрать боковую панель магазина со страниц моего отдельного продукта.Я пробовал различные варианты для этого.Я использую двадцать семнадцать тем.Сначала я попробовал этот фрагмент из 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' );
?>

Это тоже не сработало. АмЯ что-то упускаю здесь очевидное?Очень благодарен, если у кого-то есть понимание того, что я делаю неправильно.Большое спасибо.

1 Ответ

0 голосов
/ 28 октября 2018

Для темы «Двадцать семнадцать» в 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;
}
...