Делаем тему wordpress виджет — совместимой
Добрый день уважаемые читатели! Идею для написания данного материала «подкинула» мне одна моя знакомая, обратившая с просьбой ей помочь. Зная мое увлечение wordpress она попросила меня объяснить как сделать тему виджет — совместимой и где для этого необходимо зарегистрировать файл functions.php. Первая часть ее просьбы меня нисколько не удивила, а вот вторая часть просто повергла в небольшой шок. Оказывается, это она вычитала в интернете. Да, уважаемые гуру нета, хоть я отношусь к Вам уважительно, но надо же начинающему блоггеру объяснять более понятно. Профессионал уже не будет искать такой материал — он это уже знает. И вот чтобы помочь знакомой разобраться я сегодня буду максимально подробно рассказывать как добавить поддержку виджетов в wordpress.
Сегодня большинство авторов делают свои темы для wordpress виджет — совместимой. В таком шаблоне Вы простым перетаскиванием можете поменять расположение того или иного виджета в сайтбаре и самостоятельно добавлять новый виджет, с помощью которого Вы сможете разместить дополнительную информацию в боковой колонке. Это может быть Ваша твиттер — лента , последние комментарии, рекламный блок и прочее.
Но, к сожалению, остались еще темы, авторы которых не предусмотрели использование виджетов. А шаблоны эти зачастую простые, легкие и что радует без вредоносных скриптов. Можно конечно продолжить поиски новый виджет — совместимой темы, а можно и самостоятельно адаптировать шаблон .
Как сделать тему виджет — совместимой я буду описывать на своем опыте «виджирования» руссифицированной темы BWDEC2007 1.0 от Seobilgi
После того как Вы нашли подходящую тему, скачали и установили на блог на Денвере, первым делом проверяем его с помощью плагина TAC на наличие скрытых скриптов, при чистом шаблоне Вы увидите вот такую картинку (чистый шаблон выделен красной рамкой)
Далее необходимо убедиться в поддержке виджетов. Для этого заходим в консоли управления во вкладку «Виджиты» и если данная тема предусматривает установку в боковой колонке дополнительных блогов, то Вы увидите перечень виджетов установленных по умолчания. Если же данная тема не адаптирована, то появится приблизительно следующее сообщение
Пройдя по указанной ссылке попадем на страницу, объясняющую как добавить виджет в боковую колонку, но…. Хочу Вас огорчить , она на английском. Но я же отчаянная и это меня не остановит.
Расположение виджетов в основном происходит в боковой или боковых колонках шаблона, за вывод которых отвечает файл 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.
Удачи всем!
Если Вы не хотите пропустить появление новых материалов на блоге «Seo записки отчаянной«, то предлагаю подписаться на обновления блога в удобной для Вас форме.
Возможно Вам это будет интересно:
Вам понравилась статья? Расскажите о ней друзьям!