Добавление нового блока виджетов в шаблоны wordpress
Виджеты в шаблонах wordpress позволяют достаточно просто, быстро и наглядно добавлять разные элементы в дизайн вашего блога. Чаще всего виджеты выводятся в сайдбаре или футере, где можно разместить, например, список последних постов, архив блога, теги или некоторую другую информацию. Чтобы не выводить ее с помощью специальных функций в шаблонах (которые знают не все пользователи), разработчики добавляют специальные блоки виджетов. В них пользователь просто перетаскивает готовые элементы и настраивает их свойства. Сегодня рассмотрим как это реализуется. Кстати, также можно добавлять виджеты на страницы если очень нужно.
Чтобы понять о чем, собственно, я сегодня буду говорить, зайдите в раздел «Внешний вид» — меню «Виджеты». На странице слева найдете перечень доступных виджетов, а справа блоки, куда их можно добавлять.
К сожалению не всегда разработчики тем предусматривают возможность работы с виджетами, точнее будет сказать не всегда эти виджеты располагаются в нужном нам месте. В общем, сегодня расскажу немного о том где в шаблоне они указывают и как добавить новые блоки для виджетов.
В принципе, ничего сложного в этом нету, если вы часто заглядываете в редактор wordpress шаблона, то наверняка видели там блок кода по типу:
<div class="sidebar"> <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar() ) : ?> <?php endif; ?> </div> |
Этот код отвечает за вывод содержимого блока виджетов. Таким образом вы, например, можете разместить его в футере сайта, если хотите выводить виджеты там. Если установленных виджетов в шаблоне хватает, то можно ограничиться ими. Но в случае работы по шаблону на заказ (не для себя) может возникнуть ситуация создания дополнительного блока виджетов. Для этого выполняем пару шагов.
Во-первых, заходим в файл functions.php, где добавляем код:
if ( function_exists('register_sidebar') ) register_sidebar(array( 'name' => 'New Sidebar', 'before_widget' => '', 'after_widget' => '', 'before_title' => '<div class="title">', 'after_title' => '</div>', )); |
Здесь задается имя виджета (name), отображаемый HTML код до и после виджета (before_widget, after_widget), а также код до и после заголовка.
Сохраняете содержимое functions.php и заходим в раздел «Виджеты». Если все было сделано без ошибок то найдете там новый блок:
Туда уже можно будет разместить разные элементы. Но чтобы их отобразить потребуется зайти в нужный вам файл шаблона (сайдбар, футер или любое другое место), где добавляем код:
<div class="my-new-sidebar"> <?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar("New Sidebar") ) : ?> <?php endif; ?> </div> |
В отличие от самого первого примера здесь явно указываем имя блока виджетов, который мы создали. Сохраняем шаблон и смотрим на сайте все ли выводится, должно работать:) Если есть желание «копнуть глубже», то можете почитать раздел кодекса про виджеты в шаблонах.
В принципе лично я всегда виджеты убираю дабы не было несостыковок в шаблоне, когда часть выводится через виджеты, часть через специальные функции. Хотя тут, конечно, важен уровень подготовки пользователей, которые будут с админкой wordpress работать. Ну, и иногда возникаются ситуации когда все нужно сделать быстро, а виждеты размещать намного проще чем добавлять функции в код шаблона.
P.S. Постовой. Если вы собираетесь посетить «культурную столицу» России, подберите хостелы санкт-петербурга себе по желанию и возможностям.
комментария 52 к статье “Добавление нового блока виджетов в шаблоны wordpress”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Корисні поради по вибору плагінів для лендінгів на WordPress
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (247)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)

- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Почему пользователи выбирают смартфоны Apple iPhone: основные преимущества и факторы популярности
- Выделенный сервер: полный гид по аренде, выбору и администрированию
- Оптимизируем VPS под WooCommerce
- Найбільш очікувані новинки MMORPG ігор в 2025 році
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
Все это (и многое другое) делает отличный плагин Custom sidebars. Создает любое количество сайдбаров, которые потом можно привязывать к постам или страницам.
Зачем грузить сайт плагином Custom sidebars, если можно прописать в шаблоне нужный код.
Отличная статья, особенно для новичков.
Спасибо! отличная статья
извиняюсь, не по теме а как сделать страницы для листания перехода 1 2 3 и тд а то я повесть свою выкладываю и каждую главу страницей накладно а на одной очень уж длинно получаеться.
Вячеслав, в текстовом редакторе должно быть разбиение не страницы, но как это работает я лично не пробовал.
В чем может быть проблема, у меня в виджете рубрики не отображаются категории. Можно ли в этом виджете прописать другие категории отличные от категорий в хедере.
mik, сложно сказать в чем проблема, если последний вордпресс используешь, то можно подобные блоки выводить через новое меню в wordpress 3.0
Спасибо за подсказку!!! В виджете выводятся рубрики после добавления в них статей. Новое меню это хорошое решение мой проблемы. Спасибо!
Подскажите пожалуйста, как сделать такой же отсчет времени до Нового года как на сайте videorecept.ru в сайдбаре правом?
Grigor, когда давно писал статью по теме — создание на сайте счетчика обратного отсчета там есть пару решений, хотя возможно сейчас актуальны уже другие плагины и скрипты.
Мда, 2 дня думал как это сделать, сегодня сделал кое как и сразу после этого наткнулся на Ваш блог… Причем, сделал точно так же ))) Будем и дальше читать.
спасибо большое!пригодится думаю в будущем!
У меня сейчас попытка сделать три виджета в сайдбаре. Сайт трехколоночный и резиновый. Вот думаю, сделать внизу только под центральной колонкой или во всю ширину. Правда пока не могу оформить правильно их в CSS, все сдвигается.
К тому же, возникла идея воткнуть блок виджетов в синглпост, чтобы отображать там небольшое меню. Получиться нет, хз.
Все коды как в примере вставил, ничего не менял, но так и не получилось ничего…
Не отображается новый сайдбар!
Что не так?
В файл functions.php в начале добавил:
if ( function_exists(‘register_sidebar’) )
register_sidebar(array(
‘name’ => ‘New Sidebar’,
‘before_widget’ => »,
‘after_widget’ => »,
‘before_title’ => »,
‘after_title’ => »,
));
в файл футера так же добавил:
Что не так сделал? Кто подскажет?
Спасибо заранее!
Андрей, сложно сказать наверняка, я в примерах указывал код, который сам использую, поэтому он работает. Возможно ответ удастся найти на официальном сайте вордпресс http://codex.wordpress.org/Widgetizing_Themes
Всё работает. Проверьте имена. Если в коде в Функтионс.пхп имя например NEW SIDEBAR, то и в сайдбаре такое же имя должно быть.
Если в функтионс
if ( function_exists(‘register_sidebar’) )
register_sidebar(array(
‘name’ => ‘my-new-sidebar’,
‘before_title’ => »,
‘after_title’ => »,
‘before_widget’ => »,
‘after_widget’ => »,
));
То и в футере например вставляете код
имя my-ne-sidebar должно совпадать
можете мой сайт глянуть, я сделал внизу в футере 4 блока рандомных записей благодаря этой теме
Вот код из футера
?php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(«my-new-sidebar») ) : ?>
<?php endif; ?
в начале и в конце соответственно. А то он что то не отображается
Но только в фуктионс.рхр надо добавлять не в начале, а уже после
Разобрался уже просто сам накосячил в сонном бреду…
Все равно спасибо за отзывы…
Илья у тебя ошибка
перед ?> надо ставить точку с запятой, а не двоеточие… если уж помогаешь, то сам ошибки не допускай, а то совсем людей не опытных в блуд ввести можно…
Но все равно спасибо!
php if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar() ) : ?>
В это строке перед ?> точка с запятой? даже в посте в примере стоит двоеточие. А уж с точкой запятой футер вовсе не работает. Что то Вы опять путаете в сонном бреду.
пардон!
Хорошая статья, все подробно описано! спасибо автор!!
Всё понятно, но как вы у себя смогли разрезать на попалам, где реклама от гугула?
Саня, немного изменил шаблон + пару строк в CSS. Можете сохранить данную страницу и посмотреть как все реализовано на уровне HTML + CSS.
блин я кодах не очень, уже много раз пытался понять как это сделать но ничего не получается((( можете мне помочь???
Спасибо, супер, очень помогло при установке в футер
Я пожалуй остановлюсь на плагине Custom sidebars. С кодом для меня уж очень много хлопот.
Я делал кодами. Причем на страницу сообщения вставлял одни виджеты, на архив и главную сраницу другие.
Да и вывод постов делал с кодами. Этим плагином я бы не стал нагружаться.
Здравствуйте) вот и я, не знаток хтмл-я, сижу и мучаюсь с кодами)))
Сайдбар вставила, отображается только в панели управления.
Зашла в файл футера и вставила код
кстати.. в какое место(пардон))) его там вставлять? Он не отображается на сайте у меня. Имена совпадают сайдбара.
Или этот код ставить в тот же файл, что и код для сайдбара нового?…хм
Юля, сложно что-то подсказать, если честно. Попробуйте еще раз пошагово все выполнить как сказано в статье — там описан весь механизм. Еще как вариант — найти шаблон с виджетами и позаимствовать из него нужный код.
Проблема — у меня созданый виджет и тот что был работают одинаковое — я добавляю что то на новый виджет, а оно дублирует и на старый. в чем беда?