Первый виджет из плагина.

Тут в одной статейке написали, что виджет (widget) — это такая, визуальная часть нашего плагина (plugin). Ну, наверное. так и есть.
разберем сначала простейший случай, а затем перейдем к виджету, представляющему блочное представление рубрик в колонке виджетов.

Итак, создаем в текстовом редакторе файл (например: mywidget.php), который будет нашим простейшим первым виджетом:


<?php
/*
Plugin name: My first widget
*/
function my_first_widget($args) {
   extract($args);

   echo $before_widget;
   echo $before_title;
   echo 'Title';
   echo $after_title;
   echo '<center>My first widget</center>';
   echo $after_widget;
}

function register_my_widget() {
   register_sidebar_wisget('widget_name', 'my_first_widget');
}

add_action('init', 'register_my_widget');
?>

После активации этого планига, в сайдбар можно будет добавить наш новый виджет.

Как активировать плагин
Необходимо заархивировать файл mywidget.php в ZIP архив, ив плагинах админ. панели сайта добавить наш ZIP архив как новый плагин и активировать его.

Наш виджет будет просто выводить текст My first widget с заголовком Title.

Давайте разберем, как работает этот виджет.
В WordPress каждый виджет определяется уникальным именем, функцией вывода и функцией управления виджетом (в этом примере функцию управления пока не используем).
Эти функции должны вызываться из функции регистрации виджета (register_my_widget()).
Запуск функции регистрации виджета привязан к действию init (инициализации) в виджете (add_action(‘init’, ‘register_my_widget’)). Благодаря этому, виджет начинает работать после подключения всех библиотек.
Итак, при инициализации виджета (add_action) запускается ф-ция register_my_widget(), которая содержит в себе функции вывода и функции управления виджетом.
Функция вывода — это функция, которая что-то выводит в браузер.

Давайте рассмотрим на нашем примере эту функцию подробнее (my_first_widget($args)).
Строка extract($args) вытаскивает переменные $before_widget, $before_title, $after_title, $after_widget из массива $args.
Виджеты в WP имеют унифицированный дизайн при выводе в браузере (WEB-клиенте) с помощью тегов html. Примерно это выглядит так:

<li class=widget my first widget id="widget-name">
<h2 class="widgettitle">Title</h2>
<center>My first widget</center>
</li>

Здесь каждая строка характеризует каждую из наших переменных в функции my_first_widget($args):
$before_widget = <li class=widget my first widget id=»widget-name»>
$before_title = <h2 class=»widgettitle»>
$after_title = </h2>
$after_widget = </li>
Эти переменные заданы глобально, для всей темы. Таким образом достигается стандартный дизайн всех виджетов.

Функция register_my_widget() вызывается в качестве второго параметра из функции регистрации виджета register_sidebar_wisget() (первый параметр — наименование виджета), которая живет в функции, отрабатывающей при инициализации (register_my_widget()).

Наш виджет будет только отображать текст «My first widget«, и заголовок у записи будет «Title«.

Допустим, теперь нам надо будет в режиме администрирования сайта изменять заголовок виджета с «Title» на что-то другое, не приходя к переписыванию виджета. Для этого в WordPress-е предусмотрена функция register_widget_control(‘widget_name’,’my_widget_control’). Как и в случае с ф-цией register_sidebar_wisget(), первый параметр — наименование виджета, а второй параметр — наименование функции, в которой описан механизм изменения заголовка виджета «Title».
Функцию register_widget_control(‘widget_name’,’my_widget_control’) необходимо поместить внутрь функции register_my_widget(). И теперь код php-файла нашего виджета будет выглядеть так:


<?php
/*
Plugin name: My first widget
Plugin URI: http://script.melodia.org.ua
Author: Gluschenko Maxim
Author URI: http://guitar.melodia.org.ua
Description: Мой первый виджет. Здесь может быть описание виджета.

*/
function my_first_widget($args) {
   extract($args);

   echo $before_widget;
   echo $before_title;
   echo 'Title';
   echo $after_title;
   echo '<center>My first widget</center>';
   echo $after_widget;
}

function my_widget_control() {
   if (!empty($_REQUEST['my_widget_title'])) {
    update_option('my_widget_title', $_REQUEST['my_widget_title']);
   }
?>
   Заголовок : <input type="text" name="my_widget_title" />
<?
}

function register_my_widget() {
   register_sidebar_wisget('widget_name', 'my_first_widget');
   register_widget_control('widget_name', 'my_widget_control');
}

add_action('init', 'register_my_widget');
?>

Также обращаю внимание на комментарии в начале файла. Эта информация будет отображена на странице с плагинами админ. панели WORDPRESS.
Наш виджет (widget), после успешной активации плагина, появится на странице Внешний вид\Виджеты. Виджет можно перетащить на нужный нам sidebar.

Скачать этот плагин можно здесь: my_first_widget.zip

В следующей статье рассмотрим создание виджета, который будет на сайдбаре (sidebar) отображать наши рубрики (категорииcategory) в блочной структуре, с графическими объектами каждой рубрики (картинками).
Начальная задача состоит так, что у каждой записи ТОЛЬКО ОДНА РУБРИКА, и нет вложенности рубрик друг в друга.
Пример использования — Сайт Гончарна майстерня Етника пластична (рубрики на сайдбаре справа).

Comments are closed.