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

Категории группы: Обновления

Приветствую!

Рад сообщить о выходе 15-ой версии плагина WP-Recall. В этой статье мы рассмотрим основные важные моменты, на которые стоит обратить внимание.

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

  • личного кабинета
  • recallbar`a
  • формы входа и регистрации

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

Форма входа

2016-07-13_11-52-41

Форма регистрации

2016-07-13_11-56-00

Recallbar как и ранее остался разделенным на две части: левую и правую.

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

2016-07-13_11-50-37

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

2016-07-13_11-51-48

Новые иконки уведомлений можно регистрировать через функцию rcl_bar_add_icon().

Новые пункты правого меню можно добавлять через функцию rcl_bar_add_menu_item().

Например, добавим в recallbar новую иконку уведомления и новый пункт правого меню:

add_action('rcl_bar_setup','rcl_bar_add_custom_items',10);
function rcl_bar_add_custom_items(){
    global $user_ID;
	
    //Проверяем авторизован ли пользователь
    if(!is_user_logged_in()) return false;
	
    //добавляем иконку уведомления
    rcl_bar_add_icon('rcl-cart',
        array(
            'icon'=>'fa-shopping-cart',
            'url'=>'https://codeseller.ru',
            'label'=>'Содержимое корзины',
            'counter'=> 5
        )
    );
    
    //добавляем пункт меню
    rcl_bar_add_menu_item('profile-link',
        array(                
            'url'=>rcl_format_url(get_author_posts_url($user_ID),'profile'),
            'icon'=>'fa-user-secret',
            'label'=>'Настройки профиля'
        )
    );

}

Цветовая гамма вывода recallbara соответствует общей цветовой гамме плагина, указанной в настройках, либо цвету по-умолчанию, не привязанному к выбранной цветовой гамме плагина.

Рассмотрим подробнее изменения затронувшие личный кабинет пользователя.

2016-07-13_12-23-29

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

2016-07-13_12-14-22

Итак, существуют области привязанные к своему месту:

  • before - до начала вывода личного кабинета (реализуется ядром плагина)
  • top - верхняя часть личного кабинета
  • after - после вывода личного кабинета (реализуется ядром плагина)

и области привязанные к выводимому контенту:

  • actions - область выводит кнопки или ссылки требующиеся для совершения какого-либо действия по отношения к своему или чужому аккаунту, например, "Подарить подарок" или "Подписаться"
  • counters - область для вывода так называемых "счетчиков" - кнопок для вызова своих вкладок и имеющих числовой индикатор
  • menu - стандартный вывод кнопок для вызова вкладок личного кабинета
  • tabs - область для вывода содержимого вкладок личного кабинета

Также существует область details, внутри который выводится различная детальная информация о пользователе. В базовых шаблонах, данная область выводится внутри модального окна, вызываемого при нажатии на иконку вызова детальной информации пользователя.

Указанные области объявляются стандартными для каждого шаблона личного кабинета и обязательными для присутствия, их можно указывать для вывода кнопки вызова вкладки внутри функции rcl_tab();

Данные области формируются через соответствующие хуки:

  • do_action('rcl_area_before');
  • do_action('rcl_area_top');
  • do_action('rcl_area_actions ');
  • и так далее.

Ранее верстка личного кабинета, а соотвественно и вывод контента в личном кабинете определялся внутри файла-шаблона cabinet.php, который в свою очередь размещался в ядре плагина среди других подобных шаблонов вывода для форм входа и регистрации или recallbara. Начиная с этой версии файл шаблона личного кабинета было решено переименовать в office.php и размещать его внутри целого дополнения, которое и будет теперь являться шаблоном личного кабинета.

Таким образом, в WP-Recall личный кабинет теперь формируется целым дополнением, которое и задает порядок вывода личного кабинета, его верстку и стилевое отображение!

Появление шаблонов личного кабинета в виде дополнений - важная веха в истории развития плагина WP-Recall.

Шаблон личного кабинета создать очень просто, ведь это обычное дополнение к плагину WP-Recall, но с некоторыми оговорками. Внутри этого дополнения должна присутствовать папка templates с файлом office.php, который и будет содержать верстку личного кабинета с объявлением указанных ранее хуков для формирования зон вывода контента.

Типовая структура шаблона личного кабинета:

2016-07-13_16-02-43

Файл office.php будет являться обязательным для шаблона личного кабинета, а кроме его присутствия в файле info.txt следует дополнительно указать принадлежность данного дополнения именно к шаблону личного кабинета - прописав:

Template: Тут имя шаблона;

Например:

Name: MyNewTemplate;
Version: 0.1;
Support Core: 15.0.0;
Template: MyNewTemplate;
Description: Это новый шаблон личного кабинета;
Author: M.Zuckerberg;
Author URI: https://codeseller.ru;

Дополнения, помеченные таким образом как шаблоны, не будут выводится в менеджере дополнений плагина WP-Recall, а будут формировать свой отдельный список, на новой странице "WP-Recall -> Шаблоны"

2016-07-13_13-00-52

В базовую часть плагина было добавлено два новых дополнения - шаблона личного кабинета:

  • Grace
  • Sunshine

2016-07-13_13-02-05

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

Шаблон личного кабинета - это обязательное дополнение, необходимое для нормальной работы плагина WP-Recall. После активации плагина один из существующих шаблонов будет также автоматически активирован. Отключить все шаблоны не получится, один из них обязательно будет активирован.

Разработчики дополнений могут также создавать свои шаблоны личного кабинета, по аналогии с уже имеющимися, изменяя верстку, добавляя свой функционал. При создании шаблона следует объявлять вывод всех заявленных областей вывода внутри личного кабинета, кроме before и after, эти области выводятся через ядро плагина WP-Recall и их можно использовать.

Некоторый функционал, используемый в шаблоне личного кабинета, подключается из ядра плагина WP-Recall. Это касается:

  • функционала загрузки аватара
  • функционала загрузки заднего фона в личном кабинете
  • функционал вывода детальной информации пользователя в модальном окне

Подключение указанного функционала производится в коде шаблона через функцию rcl_template_support(), например:

add_action('rcl_addons_included','rcl_setup_template_options',10);
function rcl_setup_template_options(){
    //загрузчик аватара
    rcl_template_support('avatar-uploader');
    //загрузчик заднего фона
    rcl_template_support('cover-uploader');
    //вывод модального окна с детальной информацией
    rcl_template_support('modal-user-details');
}

Аналогично разработчики своих шаблонов могут подключать нужный функционал в своих шаблонах.

Введя функционал шаблонов личного кабинета мы получили возможность не только изменять верстку личного кабинета, как это было ранее, но и добавлять новый необходимый для работы шаблона функционал. Т.е. получили более широкие возможности для кастомизации личного кабинета - основы плагина WP-Recall. И в то же время, нам удалось избежать создания отдельного функционала, необходимого для работы именно с шаблонами, появления новых функций и неоправданного раздувания кода плагина, ведь данные шаблоны это не какой то другой тип сущностей, а те же дополнения к WP-Recall, соответственно и работать с ними можно как с обычными дополнениями!

До недавнего времени создавать вкладки личного кабинета было возможно только через php-код, но теперь все изменилось!

В административной части сайта появилась новая страница "WP-Recall -> Произвольные вкладки"

2016-07-13_14-22-05

Теперь, если появилась необходимость создать свою вкладку личного кабинета с произвольным содержимым, то следует просто посетить данную страницу. Через форму на этой странице можно создавать практически любое кол-во произвольных вкладок личного кабинета с нужным контентом. В качестве выводимого контента вкладки вы можете указать произвольный текст, HTML-код или использовать любые зарегистрированные шорткоды. Данный функционал открывает поистине безграничные возможности по выводу контента внутри личного кабинета. Создавайте свои вкладки, размещайте в них любой контент и изменяйте его по мере необходимости, теперь это возможно!

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

2016-07-13_14-27-35

 

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

[rcl-tab]

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

[rcl-tab tab_id="groups"]

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

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

 

Настройки плагина были также несколько доработаны.

Мы позаботились о душевном спокойствии новичков и разделили настройки плагина и дополнений на обязательные и расширенные, т.е. необязательные. Обязательные настройки плагина и дополнений предлагаются к выбору всегда, а расширенные только когда будет отмечен пункт вверху "Обязательные настройки".

2016-07-13_14-33-47

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

Разработчики дополнений могут также помечать некоторые свои настройки, добавленные через класс Rcl_Options, как расширенные. Для этого следует поместить нужные настройки внутрь метода extend, например:

$options = new Rcl_Options();
$content = $options->option_block( array(
$options->title(__('Title','wp-recall')),
	$options->option('select',array(
		//обязательная опция
	)),
	$options->extend(array(
	$options->option('number',array(
		//расширенная опция...
	))
	))
));

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

2016-07-13_14-46-02

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

$options->option('text',array(
	'name'=>'name-option',
	'label'=>'подзаголовок опции',
	'help'=>'Текст помощи, появляющийся в модальном окне',
	'notice'=>'пояснительная подпись к опции'
))

В этой версии также появилась возможность объединять некоторые опции в один массив, что удобно делать, например, для опций определенного дополнения. Например, объединим две опции внутри массива "group-options":

$options = new Rcl_Options();
$content = $options->option_block( array(
	$options->option('select',array(
		'name'=>'option1',
		'group'=>'group-options'
	)),
	$options->option('text',array(
		'name'=>'option2',
		'group'=>'group-options'
	))
));

После этого, опции будут храниться внутри массива:

'group-options' => array(
	'option1'=> 'value',
	'option2'=> 'value'
);

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

Если пока не уходить от административной части плагина, то вполне можно упомянуть о доработке функционала произвольных полей. Блоки произвольных полей на странице их создания и редактирования были переработаны, верстка переписана. Для произвольных полей была добавлена возможность указывать пояснительную подпись и placeholder.

2016-07-13_14-54-42

Также появилось произвольное поле нового типа - "Динамическое поле". Данное поле будет предлагать к заполнению динамически добавляемые текстовые поля, значения из которых будут выводится через запятую.

2016-07-13_15-00-08

За все время существования плагина был актуальным вопрос оптимизации подключения js и css файлов плагина и его дополнений. Число активных дополнений может доходить до нескольких десятков и если от каждого дополнения производить подключение хотя бы по одному js и css файлу, то количество таких подключений может превысить все разумные границы. Поэтому уже на раннем этапе развития плагина данная задача решалась путем объединения и минимизации подключаемых файлов. Хуже всего, дела обстояли с js-кодом, он зачастую был вынесен в php-код и уже его средствами формировался общий js-файл плагина и дополнений. Проблема была в том, что нам приходилось подключать на странице js-код и css-стили, которые возможно, были вообще не нужны.

В 15-ой версии функционал объединения и минимизации js и css файлов был полностью пересмотрен! Рассмотрим логику работы нового функционала с основ.

У плагина появились свои функции для подключения  js и css файлов.

Стилевые файлы плагина и дополнений, как и ранее, подключаются функцией

rcl_enqueue_style()

но теперь данная функция вторым параметром должна принимать URL до подключаемого файла, например:

rcl_enqueue_style('rcl-stls',rcl_addon_url('style.css', __FILE__));

Файлы js скриптов должны подключаться фукнцией

rcl_enqueue_script()

первый и второй обязательные параметры аналогично передают идентификатор подключения и URL до подключаемого файла

rcl_enqueue_script( 'rcl-scrpts', rcl_addon_url('js/scripts.js', __FILE__) );

Подключение файлов должны цепляться к специальному хуку

rcl_enqueue_scripts

Например:

add_action('rcl_enqueue_scripts','rcl_custom_scripts',10);
function rcl_custom_scripts(){
    rcl_enqueue_style('rcl-stls',rcl_addon_url('style.css', __FILE__));
    rcl_enqueue_script( 'rcl-scrpts', rcl_addon_url('js/scripts.js', __FILE__) );
}

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

После того, как плагин получил данные о подключаемых файлах через указанные функции он производит их объединение и минимизацию, причем файлы это происходит с учетом места вывода файлов, т.е. файлы подключаемые в верхней части сайта и нижней части сайта делятся на две группы и объединяются отдельной друг от друга. Объединенные и минимизированные файлы сохраняются на сервере, как правило, 4 файла: один js и один css файлы для подключения в верхней части страницы и также один js и один css для подключения в нижней части страницы. Особенность данного метода состоит в том, что эти файлы подключаются не на всем сайте, а только на тех страницах, где загружался такой же набор js и css файлов, а для страниц с иным набором подключений будут сформированы уже свои объединенные файлы, с другим набором скриптов и соответственно с другим весом файлов. Таким образом, мы получаем уникальный функционал, который позволяет нам подключать различные наборы js и css файлов, в зависимости от условий их подключения даже, когда на сайте работе функционал объединения и минимизации файлов!

Например, мы указали подключении файла скриптов дополнения только для главной страницы:

add_action('rcl_enqueue_scripts','rcl_custom_scripts',10);
function rcl_custom_scripts(){
    if(is_front_page())
        rcl_enqueue_script( 'rcl-scrpts', rcl_addon_url('js/scripts.js', __FILE__) );
}

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

Появление данного функционала позволило вынести используемый дополнениями js-код в отдельные js-файлы и без хлопот подключать их без оглядки на условия их подключения только там где это действительно необходимо.

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

Важно! Вносить изменения в стилевые файлы и файлы js-скриптов плагина и дополнений следует только после отключения функционала минимизации плагина WP-Recall.

Функционал минимизации и объединения подключаемых файлов плагина и дополнений можно включить/отключить через общие настройки плагина WP-Recall.

Кроме уже описанных выше нововведений и изменений следует также отметить, что в этой версии был отключен функционал вывода упрощенной формы публикации от WP-Recall. Данная форма публикации была признана несостоятельной для дальнейшего развития. Следует иметь ввиду, что если на вашем сайте эта форма публикации ранее использовалась, то при редактировании публикаций опубликованных через эту форму, она также будет подключаться, для всех новых публикаций уже будет использоваться только форма с визуальным редактором от WordPress. В дальнейшем функционал отключенной формы публикации будет вообще удален из кода дополнения публикации.

Важно! Было решено прибирать за плагином при его удалении. Будьте внимательны! При полном удалении плагина теперь производится удаление всех созданных плагином таблиц и опций в базе данных, а также созданных файлов и папок на сервере.

Не торопитесь обновляться! Обновляйтесь только после того как будут выпущены обновления под 15-ю версию плагина для всех, используемых на вашем сайте дополнений.

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

15-я версия - большой шаг в развитии плагина WP-Recall, результат долгой каждодневной работы. Многое сделано, но еще больше предстоит сделать. Не так давно, количество сайтов, использующих плагин WP-Recall, превысило 2 тысячи. Это показатель доверия к плагину. Видя растущую поддержку со стороны пользователей плагина, с вашей стороны,  нам легче строить планы на будущее, заниматься доработкой. Спасибо, что остаетесь с нами.

16

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

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

Андрей CS

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