Можно взять пример из темы Twenty Ten:
<?php if ( is_active_sidebar( 'secondary-widget-area' ) ) : ?>
<div id="secondary" class="widget-area" role="complementary">
<ul class="xoxo">
<?php dynamic_sidebar( 'secondary-widget-area' ); ?>
</ul>
</div><!-- #secondary .widget-area -->
<?php endif; ?>
Спасибо! Сергей, а этот код разве не проверяет наличие добавленных виджетов по всему блогу? У меня просто не в одном месте виджеты находятся и проверять нужно только в одном файле, а не по всему блогу. Я так понимаю, что если в блоге есть хотя бы один виджет активный, независимо от месторасположения, то данный код не сработает и будет выводится Див?
Исправил фрагмент — теперь проверяется идентификатор блока, использованный в параметрах register_sidebar()
.
Не знаю может что-то неправильно делаю, но не работает.
Сделал так:
<?php if ( is_active_sidebar( 'Side 1' ) || ( 'Side 2' ) || ( 'Side 3' )) : ?>
<div class="widgets">
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar("Side 1") ) : ?>
<?php endif; ?>
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar("Side 2") ) : ?>
<?php endif; ?>
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar("Side 3") ) : ?>
<?php endif; ?>
</div>
<?php endif; ?>
При удалении виджетов Див остаётся.
Попробовал так:
<?php if ( is_active_sidebar( 'Side 1' ) || is_active_sidebar( 'Side 2' ) || is_active_sidebar( 'Side 3' )) : ?>
<div class="widgets">
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar("Side 1") ) : ?>
<?php endif; ?>
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar("Side 2") ) : ?>
<?php endif; ?>
<?php if ( !function_exists('dynamic_sidebar')
|| !dynamic_sidebar("Side 3") ) : ?>
<?php endif; ?>
</div>
<?php endif; ?>
С этим кодом виджеты и Див вообще не появляются.
Может я что-то не совсем правильно прописал? Помоги пожалуйста.Спасибо!
Второй вариант почти правильный, но нуждается в доработке. Нужно использовать идентификаторы, а не имена блоков (т.е. side-1
вместо Side 1
).
1. Добавил в functions.php
:
register_sidebar(array(
'name' => 'Side 1',
'id' => 'side-1',
// ...
));
register_sidebar(array(
'name' => 'Side 2',
'id' => 'side-2',
// ...
));
2. Добавил в sidebar.php
(сократил код):
<?php if ( is_active_sidebar( 'side-1' ) || is_active_sidebar( 'side-2' ) ) : ?>
<div class="widgets">
<?php dynamic_sidebar('side-1'); ?>
<?php dynamic_sidebar('side-2'); ?>
</div>
<?php endif; ?>
3. Добавил виджеты — появились вместе с <div>
.
4. Удалил виджеты — исчезли вместе с <div>
.
Сергей, а у меня версия 2.8.6, а твой вариант я так понимаю для версии 3.0. Id для виджетов в моей версии не подерживаются — выскакивает 500 ошибка.