Делаем тему wordpress виджет — совместимой

добавить поддержку виджетов в wordpress Добрый день уважаемые читатели! Идею для написания данного материала «подкинула» мне одна моя знакомая, обратившая с просьбой ей помочь. Зная мое увлечение wordpress  она попросила меня объяснить как сделать тему виджет — совместимой и где для этого необходимо зарегистрировать файл  functions.php. Первая часть ее просьбы меня нисколько не удивила, а вот вторая часть просто повергла в небольшой шок.  Оказывается, это она вычитала в интернете. Да, уважаемые гуру нета, хоть я отношусь к Вам уважительно, но надо же  начинающему блоггеру объяснять более понятно. Профессионал уже не будет искать такой материал  — он это уже знает. И вот чтобы помочь знакомой разобраться я сегодня буду максимально подробно рассказывать как добавить поддержку виджетов в wordpress.

Сегодня большинство авторов делают свои темы для wordpress виджет — совместимой. В таком шаблоне Вы простым перетаскиванием можете поменять расположение того или иного виджета в сайтбаре и самостоятельно добавлять новый виджет, с помощью которого Вы сможете разместить дополнительную информацию в боковой колонке. Это может быть Ваша твиттер — лента , последние комментарии, рекламный блок и прочее.

Но, к сожалению, остались еще темы, авторы которых не предусмотрели использование виджетов. А шаблоны эти зачастую простые, легкие и что радует без вредоносных скриптов.  Можно конечно продолжить поиски новый виджет — совместимой темы, а можно и самостоятельно адаптировать шаблон .

Как сделать тему виджет — совместимой я буду описывать на своем опыте «виджирования» руссифицированной темы BWDEC2007 1.0 от Seobilgi

После того как Вы нашли подходящую тему, скачали и установили на блог на Денвере, первым делом проверяем его с помощью плагина TAC  на наличие скрытых скриптов, при чистом шаблоне Вы увидите вот такую картинку (чистый шаблон выделен красной рамкой)

добавить поддержку виджетов в wordpress

Далее необходимо убедиться в поддержке виджетов. Для этого заходим в консоли управления во вкладку «Виджиты» и если данная тема предусматривает установку в боковой колонке дополнительных блогов, то Вы увидите перечень виджетов установленных по умолчания. Если же данная тема не адаптирована, то появится приблизительно следующее сообщение

добавить поддержку виджетов в wordpress

Пройдя по указанной ссылке попадем на страницу, объясняющую как добавить виджет в боковую колонку, но…. Хочу Вас огорчить , она на английском. Но я же отчаянная и это меня не остановит.

Расположение виджетов в основном происходит в боковой или боковых колонках шаблона, за вывод которых отвечает файл sidebar.php  Для того чтобы сделать вывод дополнительных боковых блоков в колонке или колонках придется внести изменения в шаблон.

Для начала открываем файл sidebar.php и видим следующее:

<div class=»content»>
<div id=»main»>
<div class=»padding»>
<div class=»right_side»>
<?php include (TEMPLATEPATH . ‘/sponsors.php’); ?>
<h3>Новое на сайте</h3>
<ul>
<?php wp_get_archives(‘type=postbypost&limit=10’); ?>
</ul>
<?php include (TEMPLATEPATH . ‘/adsense.php’); ?>
<?php if ( function_exists(‘wp_tag_cloud’) ) : ?>
<div class=»extra»>
<div class=»padding»>
<p><?php wp_tag_cloud(‘smallest=8&largest=18’); ?></p>
</div>
</div>
<?php endif; ?>
<div class=»ls»>
<h3>Рубрики</h3>
<ul>
<?php wp_list_cats(); ?>
</ul>
<h3>Архив</h3>
<ul>
<?php wp_get_archives(‘type=monthly’); ?>
</ul>
</div>
<div class=»rs»>
<h3>Прочее</h3>
<ul>
<?php wp_meta(); ?>
<?php wp_register(); ?>
<li><?php wp_loginout(); ?></li>
<li><a href=»<?php bloginfo(‘rss2_url’); ?>» title=»<?php _e(‘Синдикация через RSS’); ?>»>Rss</a></li>
<li><a href=»<?php bloginfo(‘comments_rss2_url’); ?>» title=»<?php _e(‘Последние комментарии через RSS’); ?>»>Отзывы Rss</a></li>
</ul>
</div>
</div>

В нем строго прописано расположение рекламы, Новое на сайте, Рубрики, Архив и Прочее. И даже при желании поменять положение блоков придется переписывать данный файл.

Для того чтобы в сайтбаре происходило отражение виджетов необходимо добавить код

<?php if ( !function_exists(‘dynamic_sidebar’)
|| !dynamic_sidebar() ) : ?>
<?php endif; ?>

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

<div class=»content»>
<div id=»main»>
<div class=»padding»>
<div class=»right_side»>
<?php include (TEMPLATEPATH . ‘/sponsors.php’); ?>
<h3>Новое на сайте</h3>
<ul>
<?php wp_get_archives(‘type=postbypost&limit=10’); ?>
</ul>
<?php include (TEMPLATEPATH . ‘/adsense.php’); ?>
<?php if ( function_exists(‘wp_tag_cloud’) ) : ?>
<div class=»extra»>
<div class=»padding»>
<p><?php wp_tag_cloud(‘smallest=8&largest=18’); ?></p>
</div>
</div>
<?php endif; ?>
<div class=»ls»>
<h3>Рубрики</h3>
<ul>
<?php wp_list_cats(); ?>
</ul>
<h3>Архив</h3>
<ul>
<?php wp_get_archives(‘type=monthly’); ?>
</ul>

<?php if ( !function_exists(‘dynamic_sidebar’)
|| !dynamic_sidebar(‘sidebar1’) ) : ?>
<?php endif; ?>

</div>
<div class=»rs»>
<h3>Прочее</h3>
<ul>
<?php wp_meta(); ?>
<?php wp_register(); ?>
<li><?php wp_loginout(); ?></li>
<li><a href=»<?php bloginfo(‘rss2_url’); ?>» title=»<?php _e(‘Синдикация через RSS’); ?>»>Rss</a></li>
<li><a href=»<?php bloginfo(‘comments_rss2_url’); ?>» title=»<?php _e(‘Последние комментарии через RSS’); ?>»>Отзывы Rss</a></li>
</ul>

<?php if ( !function_exists(‘dynamic_sidebar’)
|| !dynamic_sidebar(‘sidebar2’) ) : ?>
<?php endif; ?>

</div>
</div>

То есть я подготовила файл sidebar.php к выводу дополнительных виджетов в обоих колонках.

Теперь необходимо системе сообщить о произошедших изменениях. Для этого следует в файле functions.php прописать код

if ( function_exists(‘register_sidebar’) )
register_sidebar(array(
‘before_widget’ => »,
‘after_widget’ => »
));

Это в том случае если колонка одна, при наличие двух колонок прописываем немного другой код

if ( function_exists(‘register_sidebar’) )
register_sidebar(array(
‘name’=>’sidebar1’,
‘before_widget’ => ‘<ul id=»%1$s» class=»sidebaritem»>’,
‘after_widget’ => ‘</ul>’,
‘before_title’ => ‘<h3 class=»widgettitle»>’,
‘after_title’ => ‘</h3>’,
));
register_sidebar(array(
‘name’=>’sidebar2’,
‘before_widget’ => ‘<ul id=»%1$s» class=»sidebaritem»>’,
‘after_widget’ => ‘</ul>’,
‘before_title’ => ‘<h3 class=»widgettitle»>’,
‘after_title’ => ‘</h3>’,
));

Прописываем этот код в самом начале файла

<?php

if ( function_exists(‘register_sidebar’) )
register_sidebar(array(
‘name’=>’sidebar1’,
‘before_widget’ => ‘<ul id=»%1$s» class=»sidebaritem»>’,
‘after_widget’ => ‘</ul>’,
‘before_title’ => ‘<h3 class=»widgettitle»>’,
‘after_title’ => ‘</h3>’,
));
register_sidebar(array(
‘name’=>’sidebar2’,
‘before_widget’ => ‘<ul id=»%1$s» class=»sidebaritem»>’,
‘after_widget’ => ‘</ul>’,
‘before_title’ => ‘<h3 class=»widgettitle»>’,
‘after_title’ => ‘</h3>’,
));

add_filter(‘the_content’, ‘_bloginfo’, 10001);
function _bloginfo($content){

И тем самым задаем , что перед и после кода самого виджета ничего отражаться не будет и его вид будет соответствовать внешнему виду отражения боковых блогов прописанных в самом шаблоне ( здесь единственно надо проверить будет соотвествие тега h с файлом sidebar.php).

И теперь зайдя на страницу управления виджетами этой темы можно в правом углу увидеть два прямоугольничка sidebar1 и sidebar2. Пробую перетянуть на них несколько виджетов

добавить поддержку виджетов в wordpress

И ура! — они отражаются в обоих колонках!  И имеют внешний вид как и у блоков по умолчанию.

добавить поддержку виджетов в wordpress

На данном примере я Вам показала как можно легко самостоятельно сделать любую тему совместимой с виджетами. Единственно, надо внимательно и точно прописывать указанные коды.

На этом поидеи проблема моей знакомой была исчерпана,она получила тему поддерживающую виджиты, а я достигла новых вершин в знаниях wordpress.

Удачи всем!

Если Вы не хотите пропустить появление новых материалов на блоге «Seo записки отчаянной«, то предлагаю подписаться на обновления блога в удобной для Вас форме.

Вам понравилась статья? Расскажите о ней друзьям!