Виджеты - это очень просто!
“Не знание технологий не освобождает от…”, не, не то. “А я вот сделал, а оно не работает…”.
К чему это я? Ах да, в последнее время ко мне несколько разных человек обратились примерно с одним и тем же вопросом:
“Почему, после того как я добавил в sidebar.php код кнопки/баннера/ссылки, ничего не изменилось и я их не вижу?!”
На что я сразу выдаю контр-вопрос (нет-нет, я не еврей):
“А вы используете в своей теме виджеты?!”
Просто не все осознают, что всё что находится ниже строки:
if ( !function_exists(’dynamic_sidebar’) || !dynamic_sidebar() )
в sidebar.php будет показано ТОЛЬКО в том случае, если вы не включили ни одного виджета. В противном случае будут отображаться ваши настройки из “Внешний вид > Виджеты”.
Обычно после того, как я это объясняю, следует вопрос - “Ну и как мне поместить свой код в сайдбар/виджет?!”, да очень просто - если это обычный хтмл-код (а это в 90% случаев баннеры и стандартные ссылки/кнопки), то достаточно добавить стандартный текстовый виджет и поместить в него готовый код.
Но что делать, если виджет должен выводить результат выполнения какой-то функции? И ведь действительно, почти все “мощные” плагины, такие как ‘Popularity Contest‘ (русская версия), позволяют получать обработанную информацию из своих функций. Например, akpc_most_popular - самые популярные, akpc_most_popular_in_cat - самые популярные в какой-то категории и т.д.
Да, я знаю КАК можно сделать свой виджет, путём редактирования functions.php, но даже мне порой бывает лень это делать, а что говорить о людях, для которых внести изменения в файл темы (причём не просто копи-паст, а ещё и осмысленное редактирование) - это нечто равносильное тасканию пятидесяти килограммовых мешков?
Для таких страдальцев нашёлся чудо плагин Custom Function Widgets (скачать), авторства Kaspars Dambis из Латвии.
Как это работает.
- Скачиваете и устанавливаете как и любой другой плагин.
- После активации в меню “Внешний вид > Виджеты” появится новый раздел “Custom Function Widgets”, где вы можете указать необходимое количество настраиваемых виджетов.
- Теперь перетащите один из “Custom Function” плагинов в свой сайдбар и нажмите кнопку настройки.
- Введите в поле Function name имя нужной функции (например, st_related_posts, чтобы вывести связанные посты, при помощи плагина Simple Tags) и жмём “сохранить”.
- Вуаля, если всё сделали правильно, то можем полюбоваться на результат в сайдбаре блога.
Теперь объясню какие поля в настройках за что отвечают:
Widget title - заголовок виджета. Он будет показан при выводе (если вы специально не отключите, о чём ниже), а так же это название будет видно в панели управления виджетами.
Function name - имя функции. Указывается без кавычек и скобок.
Function variables - переменные, передаваемые в функцию. Если функция для работы требует параметры, то указывайте их тут. Важно сохранять последовательность переменных, а так же перечислять переменные через запятую, если их несколько.
HTML before и HTML after - хтмл код, который будет выводиться перед и после вашей функции. Обычно это обрамление тэгами списков, ну или возможно подключение какого-нибудь java-script.
Галочка Remove Widget title from output отключает вывод заголовка виджета в сайдбар, а Remove the default widget wrapper - отключит разрывы между виджетами.
В общем - пробуйте и пишите отзывы тут или сразу автору плагина, который очень оперативно ответил и исправил найденный мною баг. Ещё раз ссылка на скачку плагина.
Из той же оперы, так что прочти обязательно:
Метки: guide, popularity contest, sidebar, Simple Tags, tags, themes, widget, виджеты, плагин, темы, шаблоны

11 февраля 2008 в 11:46
Есть еще один вариант решения той же самой задачи - поставить плагин Exec-PHP и вставлять нужный код в текстовые виджеты.
12 февраля 2008 в 7:20
А расскажите, как сделать тему виджет-совместимой. А то все объяснения что я нашел - все на английском, а я в нем не силен…
13 февраля 2008 в 5:35
объясните тупому как воткнуть пхп код сапы в виджет. нихера не понял
13 февраля 2008 в 22:25
Мне тоже было бы интересно узнать, как сделать тему виджет-совместимой. Какие вы можете дать практические советы?
15 февраля 2008 в 1:26
Эта статья как раз то что я искал! Большое спасибо! Долго мучался с этими виджетами, наконец-то всё получилось!
15 февраля 2008 в 1:46
Да, по поводу виджет - совместимости была бы статья очень полезна. А то пытаюсь добавить виджет - а он говорит сделайте её совместимой. Переходишь на страницу руководства - а она на инглише, которым к сожалению владею не в совершенстве.
15 февраля 2008 в 16:03
да, спасибо за информацию о виджетах
в общем очень помогло
18 февраля 2008 в 17:29
Очень хорошо написал!Мне как базис=)
10 марта 2008 в 14:03
akpc_most_popular не работает … Как заставить? Возвращает none
28 августа 2008 в 16:08
Хорошая статья, помогла.