Сначала, нам необходимо зарегистрировать свои области виджетов в WordPress. В файле functions.php вашей темы ищем регистрацию уже существующих областей, выглядит это примерно так:
register_sidebar(array(
В некоторых темах, например от http://www.InkThemes.com регистрация виджетов вынесена в отдельный файл, но его легко найти по функции include_once.
Добавляем свои области рядом с уже опубликованными:
// Область виджетов в шапке register_sidebar(array( 'name' => __('Виджеты для шапки'), 'id' => 'header-widget-area', 'description' => __('Виджеты в шапке, например для баннера'), 'before_widget' => '', 'after_widget' => '', 'before_title' => '<h3><a href="#">', 'after_title' => '</a></h3>', )); // Область виджетов внутри поста register_sidebar(array( 'name' => __('Виджеты на странице поста'), 'id' => 'postin-widget-area', 'description' => __('Виджеты на странице поста'), 'before_widget' => '', 'after_widget' => '', 'before_title' => '<h3><a href="#">', 'after_title' => '</a></h3>', )); // Область виджетов на странице архивов register_sidebar(array( 'name' => __('Виджеты для страницы архивов'), 'id' => 'arhive-widget-area', 'description' => __('Виджеты для страницы архивов'), 'before_widget' => '', 'after_widget' => '', 'before_title' => '<h3><a href="#">', 'after_title' => '</a></h3>', ));
Первый этап завершен, можно «полюбоваться» на него в административной панели:
Мы добавили области виджетов во внутренний интерфейс WordPress, его можно даже заполнить необходимыми виджетами, но чтобы увидеть эти изменения на сайте, необходимо вставить созданные нами области виджетов в код тех страниц, где мы хотели их разместить.
<?php if (!dynamic_sidebar("header-widget-area") ) : ?> <!-- Код который будет выводиться если в вашей области не добавлено --> <div style="float:right;width:500px;height:60px; margin-bottom:20px;margin-top:20px;"><img src="/img/banner.png" /></div> <!-- ни одного виджета --> <?php endif; ?>
Размещаем этот код в файле header.php. Лично я обычно размещаю внутри блока содержащего логотип, чтобы сайдбар с баннером получался на одном уровне с логотипом, справа него. Единственное что необходимо сделать, это стилями CSS выровнять его в блоке.
<div class="header" id="#top"> <div class="grid_9 alpha"> <div class="logo"><a href="<?php echo home_url(); ?>"><img src="<?php if (infoway_get_option('infoway_logo') != '') { ?><?php echo infoway_get_option('infoway_logo'); ?><?php } else { ?><?php echo get_template_directory_uri(); ?>/images/logo.png<?php } ?>" alt="<?php bloginfo('name'); ?>" /></a> </div> </div> <div class="grid_15 omega"> <?php if (!dynamic_sidebar("header-widget-area") ) : ?> <!-- Код который будет выводиться если в вашей области не добавлено --> <div style="float:right;width:500px;height:60px; margin-bottom:20px;margin-top:20px;"><img src="/img/banner.png" /></div> <!-- ни одного виджета --> <?php endif; ?> </div> </div>
Все готово, результат мы видим на этом сайте в виде баннера рядом с логотипом сайта.
Аналогично поступаем с архивными страницами, добавляем нижеследующий код:
<?php if (!dynamic_sidebar("arhive-widget-area") ) : ?> <!-- Код который будет выводиться если в вашей области не добавлено --> <!-- ни одного виджета --> <?php endif; ?>
В файл archive.php, например перед вызовом сайдбара
Теперь наша область виджетов показывается на страницах архивов в верхней части правой боковой колонки. На этом сайте я вывел календарь на странице архивов, посмотреть можно например тут Архив за 2013 год
Теперь добавим последнюю область
<?php if (!dynamic_sidebar("postin-widget-area") ) : ?> <!-- Код который будет выводиться если в вашей области не добавлено --> <!-- ни одного виджета --> <?php endif; ?>
Вставляем этот код в single.php или loop.php перед выводом if (have_posts()) : while (have_posts()) : the_post();
comments powered by HyperComments