Публикация в группе: Плагин WP-Recall - Личный кабинет на WordPress

Категории группы: Полезное

Начиная с версии 13.7.0 плагина WP-Recall в группах каждый администратор группы может управлять выводом контента через виджеты.

Виджеты размещаются в своих контентных зонах, между которыми они могут перемещаться.

В дефолтном шаблоне группы по-умолчанию зарегистрировано три области контента: content, footer и sidebar. Разработчикам своих шаблонов будет полезно узнать как именно производится регистрация и размещение своей области контента в шаблоне группы.

Зарегистрируем новую область контента с идентификатором 'custom-sidebar' и названием 'Мой сайдбар':

add_action('init','add_custom_group_sidebar');
function add_custom_group_sidebar(){
    rcl_register_group_area(
        array(
            'name'=>'Мой сайдбар',
            'id'=>'custom-sidebar'
        )
    );
}

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

2015-11-21 15-51-17 Группы Работа сайта WPPOST - WPPOST - продажа цифровых товаров - Mozilla Firefox

Когда область виджетов зарегистрирована, остается только вывести ее в нужном месте шаблона группы:

rcl_group_area('custom-sidebar');

Мы передаем в функцию rcl_group_area идентификатор зарегистрированной области, после этого функция начнет выводить содержимое виджетов, если таковые в этой области имеются.

Регистрация области виджетов достаточно проста, перейдем к рассмотрению порядка создания своего виджета.

Для начала надо создать дочерний класс для класса Rcl_Group_Widget.

if(class_exists('Rcl_Group_Widget')){
    class Group_Custom_Widget extends Rcl_Group_Widget {

//здесь задаются основные параметры виджета
        function Group_Custom_Widget() {
            parent::__construct( array(
                'widget_id'=>'group-custom-widget',
                'widget_title'=>'Мой виджет',
                'widget_place'=>'custom-sidebar'
                )
            );
        }

        //здесь будем выводить контент
        function widget($args,$instance) {


        }
        
//тут будем размещать настройки виджета 
        function options($instance){

        }

    }
}

Итак, мы создали заготовку, свой класс Group_Custom_Widget с тремя методами внутри: одноименным Group_Custom_Widget, widget и options.

Первый метод должен по названию соответствовать названию нашего созданного класса, он содержит массив с основными данными создаваемого виджета:

  • widget_id - идентификатор виджета
  • widget_title - Заголовок виджета по-умолчанию
  • widget_place - идентификатор области виджетов, в котором будем выводить виджет по-умолчанию, можно указывать 'unuses', если хотим размещать виджет в области неиспользуемых виджетов.

Рассмотрим второй метод - widget. Именно тут и производится вывод контента нашего виджета. Метод получает два аргумента: $args и $instance. Первый передает для построения виджета, данные верстки выводимые до и после выводимого контента, а второй получает массив настроек виджета, если такие имеются.

Выведем простейший контент нашего виджета:

function widget($args,$instance) {
	global $rcl_group;

	extract( $args );

	echo $before;

	echo 'Happy new year - 2016!';

	echo $after;

}

Теперь наш виджет, при размещении в какой-либо области контента будет выводить строку: "Happy new year - 2016!". Это пример создания простейшего виджета, без каких-либо его настроек. Добавим настройки заголовка нашего виджета:

function options($instance){
//тут указываем заголовок виджета по-умолчанию, если он еще не указан
	$defaults = array('title' => 'Мой виджет');
	$instance = wp_parse_args( (array) $instance, $defaults );
//вывод поля настройки заголовка
	echo ''
			. '';

}

Теперь у нашего виджета появилась настройка заголовка:

2015-11-21 16-05-58 Группы Работа сайта WPPOST - WPPOST - продажа цифровых товаров - Mozilla Firefox

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

Добавим настройку для смены года при выводе контента нашего виджета:

function options($instance){

	$defaults = array('title' => 'Мой виджет','year' => 2016);
	$instance = wp_parse_args( (array) $instance, $defaults );

	echo ''
			. '';
	echo ''
			. '';

}

Теперь получим текущее значение года из настроек и выведем его в контенте виджета:

 

function widget($args,$instance) {
	global $rcl_group;

	extract( $args );

	echo $before;
	
	$year = (isset($instance['year']))? $instance['year']: '2016';

	echo 'Happy new year - '.$year.'!';

	echo $after;

}

Теперь у нашего виджета есть настройка для смены года при выводе поздравления и мы сможем использовать его и в следующем году))

После того как для нашего виджета были созданы настройки и сформирован контент для вывода, мы можем зарегистрировать его в системе виджетов групп:

add_action('init','rcl_group_custom_widget');
function rcl_group_custom_widget(){
    rcl_group_register_widget('Group_Custom_Widget');
}

Посмотрим полный код нашего виджета:

add_action('init','rcl_group_custom_widget');
function rcl_group_custom_widget(){
    rcl_group_register_widget('Group_Custom_Widget');
}

if(class_exists('Rcl_Group_Widget')){
    class Group_Custom_Widget extends Rcl_Group_Widget {

        function Group_Custom_Widget() {
            parent::__construct( array(
                'widget_id'=>'group-custom-widget',
                'widget_title'=>'Мой виджет',
                'widget_place'=>'custom-sidebar'
                )
            );
        }
        
		function widget($args,$instance) {
			global $rcl_group;

			extract( $args );

			echo $before;
			
			$year = (isset($instance['year']))? $instance['year']: '2016';

			echo 'Happy new year - '.$year.'!';

			echo $after;

		}

		function options($instance){

			$defaults = array('title' => 'Мой виджет','year' => 2016);
			$instance = wp_parse_args( (array) $instance, $defaults );

			echo ''
					. '';
			echo ''
					. '';

		}

    }
}

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

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

Если при формировании настроек или контента виджета вдруг понадобятся данные текущей группы, то вы всегда можете получить их из глобальной переменной $rcl_group - это объект с основными параметрами.

 

3

Автор публикации

не в сети 20 часов

Андрей CS

12K
занят
Комментарии: 2764Публикации: 492Регистрация: 30-11--0001Продаж/Покупок: 0/0