Как сохранить размещение боковой панели в Wordpress на страницах WooCommerce

Если вы используете боковую панель в WordPress, вы можете поместить в нее такие вещи, как меню навигации.

Чтобы разместить боковую панель в правильном элементе-контейнере, вы просто вызываете <?php get_sidebar(); ?> внутри этого элемента, и боковая панель должна быть размещена внутри него.

Например, следующий код должен привести к появлению боковой панели в нижнем колонтитуле WordPress:

<footer class="footer">
  <div id="inner-footer">
    <div id="main-content-footer" class="span_16">

      <?php get_sidebar(); ?>

    </div>
  </div>
</footer>

Этот код будет работать на страницах, не интегрированных с WooCommerce, например на главной странице.

На страницах с WooCommerce код, сгенерированный <?php get_sidebar(); ?>, будет отображаться за пределами нижнего колонтитула в элементе div #inner-content, который находится внутри родительского div с именем #content.

Какие файлы отвечают за правильное размещение кода боковой панели в woocommerce? Возможно ли, что WooCommerce генерирует свои собственные <?php get_sidebar(); ?>? Если да, то что я могу сделать, чтобы убедиться, что WooCommerce не влияет на боковую панель навигации?

Спасибо вам всем


person Jack_D    schedule 25.07.2012    source источник


Ответы (2)


Похоже, эта проблема связана с хуками WooCommerce и тем, как их содержимое упаковано по сравнению с тем, как расположены «обычные» темы.

Простое решение — использовать woocommerce_content() для обозначения собственного шаблона для страниц WooCommerce. См. документацию здесь: http://wcdocs.woothemes.com/codex/Third-Party-custom-theme-compatibility/

Другой способ исправить это — переопределить их файл sidebar.php своим собственным. Документация здесь: http://wcdocs.woothemes.com/codex/template-structure/

person itecedor    schedule 25.07.2012
comment
Спасибо за ответ, я посмотрю на это. - person Jack_D; 26.07.2012

Это работает для меня. Этот фрагмент кода удаляет боковую панель WooCommerce, которая не появляется после блока #primary, поэтому вы можете использовать get_sidebar('shop') в своих макетах.

<?php 
// in your themes functions.php

/* remove sidebar */
function woocommerce_remove_sidebar_shop() {
    if( is_woocommerce() )
       remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10);
    }

add_action( 'template_redirect', 'woocommerce_remove_sidebar_shop' );

?>
person Janiis    schedule 02.12.2016