2016-06-25 8 views
-1

Я запускаю тему Avada вместе с WooCommerce на сайте wordpress.Пользовательские «боковые панели» в WP

Проблема в том, что я пытаюсь найти функцию поиска в верхней части страницы, но только в режиме отклика (на мобильных устройствах). Я смог добавить третий вариант для боковой панели в woocommerce. это отображается в конфиге (где выбрать, какие виджеты должны войти). Но я не могу его показать.

Я знаю, что вы получите оригинальные боковые панели, как это (скопированные непосредственно из оригинального архива-product.php):

<?php 
     do_action('woocommerce_sidebar'); 
?> 

Так что я решил, что это должно быть возможно назвать для нашей собственной боковой панели с помощью следующей строки :

<?php 
     do_action('woo_sidebar-3'); 
?> 

Это не работает. Так как это должно быть в состоянии показать только на чувствительных устройствах, которые мы использовали параметр пользовательского CSS слияния, чтобы скрыть другие боковые панели следующим образом:

@media only screen and (max-width: 720px) { 
    #sidebar { 
     display: none; 
    } 
} 

Что, конечно, слишком просто, так как он будет блокировать все боковые панели , Но это то, что мы могли бы легко изменить. Пока что 3-я боковая панель, которую мы создали, не отображается на отзывчивых или на настольных версиях сайта. в то время как другие показывают на рабочем столе, но не на реагирующих (по желанию).

Edit-:

Так я попытался это с помощью следующего кода:

<?php if (!function_exists('dynamic_sidebar') || 
      !dynamic_sidebar('woo_sidebar_3')) { ?> 
    <p>Oops... this displays if the topbar is not set up</p> 
<?php } ?> 

Он показывает ошибку, как указано в коде, поэтому он пытается вытянуть боковую панель, как мы создали. Но это не видно. Это потому, что следующее может работать неправильно? :

'woo_sidebar_3' => array(
    'label'   => esc_html__('Global WooCommerce Product Sidebar 3', 'Avada'), 
    'description'  => esc_html__('Custom sidebar 3', 'Avada'), 
    'id'    => 'woo_sidebar_3', 
    'default'   => 'None', 
    'type'   => 'select', 
    'choices'   => $sidebar_options, 
    'active_callback' => array('Avada_Options_Conditionals', 'is_woo'), 

Копия была скопирована с одного над ним, что называется woo_sidebar_2?

EDIT 2 -:

Here is a JSfiddle с полным кодом sidebars.php в нем, и код dynamic_sidebar (как HTML). ошибка, на которую я указывала, также видна при запуске te script.

+0

На самом деле, 'do_action()' это просто «крючок» и не * сделать * ничего, если функция не была добавлена ​​к нему через 'add_action()'. Чтобы отобразить свою настраиваемую боковую панель, вам нужно вызвать ['dynamic_sidebar()'] (https://codex.wordpress.org/Function_Reference/dynamic_sidebar) – helgatheviking

+0

К сожалению. Не подходит. Пожалуйста, проверьте мой другой ответ. –

+0

Измените свой вопрос, а не отправляйте ответ, который на самом деле не является ответом. Пожалуйста, добавьте полный код боковой панели регистра, и я посмотрю. И что означает «Он показывает ошибку, указанную в коде»? Какую ошибку вы видите? – helgatheviking

ответ

1

Я не достаточно знаком с темой Avada, чтобы узнать, что означают некоторые из этих параметров, и ваш блок кода не показывает вызов register_sidebar(), хотя Avada должен его использовать.

Чтобы сделать вещи проще, вы можете использовать стандартный код WordPress для registering a widget area

В вашей теме (в идеале ребенок тема) добавить:

function so_38033924_widgets_init() { 

    register_sidebar(array(
     'name'   => __('Global WooCommerce Product Sidebar 3', 'your-theme'), 
     'id'   => 'woo_sidebar_3', 
     'description' => __('Custom sidebar 3', 'your-theme'), 
     'before_widget' => '<div class="widget">', 
     'after_widget' => '</div>', 
     'before_title' => '<h2 class="widgettitle">', 
     'after_title' => '</h2>', 
    )); 

} 
add_action('widgets_init', 'so_38033924_widgets_init'); 

Вы должны были бы убедиться, что before_widget, before_title, тип параметров соответствует родительской теме, так что ваш виджет получит тот же стиль.

И тогда ваш код шаблона выглядит прямо ко мне:

<?php if (!function_exists('dynamic_sidebar') || 
      !dynamic_sidebar('woo_sidebar_3')) { ?> 
    <p>Oops... this displays if the topbar is not set up</p> 
<?php } ?> 
+0

Ваш код помог немного. Оказалось, что в этой теме было больше LOT, которые нужно было скопировать и отредактировать. Но благодаря вашему коду я узнал, как все это работает намного быстрее. БЛАГОДАРЯ! :) –

+0

Могу я задать еще один вопрос? В этой теме есть вторая боковая панель (которую мы пока не используем). Есть ли способ полностью скрыть это в CSS, чтобы он не уменьшил ширину макета, как сейчас? Я пробовал отображение: нет и позиция: абсолютная с -9999px, но, похоже, это не влияет на макет. –

+0

Если вы не используете его, вы можете попробовать ['unregister_sidebar()'] (https://codex.wordpress.org/Function_Reference/unregister_sidebar), хотя удаление боковой панели не повлияет на CSS смежных div. Вам нужно настроить ширину любой боковой панели рядом. – helgatheviking

Смежные вопросы