Содержание:
- Введение. Что такое реколлбар (recallbar)
- Структура файла recallbar.php
- Меню слева в реколлбаре
- Выведем справа новую иконку-уведомление со счетчиком и ссылкой на нужную страницу
- Добавим в меню автора ссылку на одну из страниц личного кабинета
- Скроем реколлбар для гостей и уберем отступы
- Поменяем вид иконки-уведомления на примере "Корзины"
- Сменим иконку «В админку» в меню автора в реколлбаре
- Выведем в реколлбаре баланс текущего пользователя
- Моргание нужной иконки в реколлбаре (когда значение > 0)
- Покажем кнопку последних тем форума в реколлбаре
- Выведем меню плагина Query Monitor в реколлбаре
1. Введение. Что такое реколлбар (recallbar)
Recallbar - верхняя панелька WordPress плагина WP-Recall, которая всегда на виду у ваших пользователей. Первая поддержка появилась с версии 3.7 (2 марта 2013). По аналогии админ-бара вордпресс, но легко настраиваемая. В этом руководстве я вам подскажу как прокачать ваш Recallbar (далее реколлбар).
С версии 9.10 WP-Recall стал поддерживать шаблоны. Шаблон реколлбара расположен по пути:
ваш-сайт/wp-content/plugins/wp-recall/templates/recallbar.php
.
Копируем реколлбар оттуда в папку:
ваш-сайт/wp-content/wp-recall/templates/
- и уже оттуда редактируем под себя. Скопировав сюда - при обновлении плагина изменения не затрутся.
Список всех шаблонов WP-Recall можете найти на этой странице
Внимание!!
Конечно же, реколлбар должен быть у вас включен в настройках: "Wp-Recall" -> "Общие настройки" -> Recallbar -> "Вывод панели recallbar" -> Подключено.
Там же вы можете включить опцию "Основные цвета WP-Recall" - это значит, что как у вас настроен цвет кнопок в личном кабинете – в этой гамме будет у вас и реколлбар
Функции реколлбара находятся тут:
/wp-content/plugins/wp-recall/functions/recallbar.php
И в файле:
/wp-content/plugins/wp-recall/functions/rcl-frontend.php
2. Структура файла recallbar.php
Итак - файл recallbar.php (Все картинки кликабельны)
В шаблоне он разделен на 2 части:
Левая часть – все что внутри тега <div class="rcb_left">
Правая – все что внутри <div class="rcb_right">
Левая часть реколлбара:
В левой части выводится меню реколлбара (рассмотрим ниже), ссылка на главную страницу сайта и происходит проверка – гость это или авторизованный пользователь. В зависимости от этого выводятся кнопки входа и регистрации и регистрация выводится только если в настройках вордпресс она разрешена.
С версии 16.6.15 добавлен хук rcl_bar_left_icons
- с помощью него вы в левую часть можете добавить вашу функцию (кнопки, текст или меню)
Правая часть реколлбара:
В правой части выводятся кнопки от сторонних дополнений и меню автора – которое появляется для залогиненного пользователя.
Там же имеется три хука (actions): rcl_bar_print_icons
– за него можно зацепиться и вывести свои иконки-кнопки-счетчики-ссылки и второй хук rcl_bar_print_menu
– срабатывает в меню автора.
И общий экшен rcl_bar_setup
- который отрабатывает при вызове реколлбара
Эти три хука позволяют нам программно добавить в эти области реколлбара – и даже нет необходимости производить вышеназванные манипуляции по копированию шаблона – если вам всего лишь надо добавить ссылку.
Но в примерах мы будем использовать специальные функции от плагина WP-Recall которые позволят легко, без верстки в стиле иконок и в стиле меню выводить нам то что нам нужно. Этот метод описывался в релизе 15й версии: https://codeseller.ru/post-group/wp-recall-15/
3. Меню слева в реколлбаре
Реколлбар регистрирует свою область в меню вашего сайта, а значит, что в него из админки, вы можете легко добавить ссылки для всех посетителей вашего сайта: Переходим "Внешний вид" - "Меню":
Накидываем нужные пункты, ставим галку "Области темы" - "Recallbar" и сохраняем меню. Теперь во фронтенде слева вы увидите выпадающее меню в реколлбаре.
4. Выведем справа новую иконку-уведомление со счетчиком и ссылкой на нужную страницу
Все фрагменты кода ниже вы можете вставить в файл functions.php вашей активной вордпресс темы или использовать при создании своего дополнения к плагину WP-Recall.
// добавим справа иконку-уведомление function my_rcl_bar_add_icon(){ //добавляем иконку уведомления rcl_bar_add_icon('mu_ui_tab', // уникальный id array( 'icon'=>'fa-camera', // иконка с сервиса https://fontawesome.com/v4.7.0/icons/ 'url'=> home_url('/?page_id=2'), // целевая страница 'label'=>'Фото', // подсказка по наведению 'counter'=> 5 // значение ) ); } add_action('rcl_bar_setup','my_rcl_bar_add_icon',10);
- функция rcl_bar_add_icon принимает уникальный идентификатор и массив включающий в себя:
- иконку с сервиса fontawesome.com
- url целевой страницы - по клику по иконке-уведомления пользователь перейдет туда
- label - подсказка которая по наведению на иконку всплывет
- counter - число счетчика которое будет отображено справа вверху от иконки.
И вся наша функция подвешивается на экшен rcl_bar_setup
- который отрабатывает при вызове реколлбара
Если вам необходимо добавить ссылку только для админа – внутри функции my_rcl_bar_add_icon
в самом верху вписываем:
if(!current_user_can('activate_plugins')) return false; // если не админ выходим
5. Добавим в меню автора ссылку на одну из страниц личного кабинета
Добавим в правое меню автора, в реколлбаре, новый пункт. Только для залогиненного пользователя. В этом примере у нас будет в личном кабинете некая вкладка "Карточка профиля" с идентификатором "user-info" (в кабинете урл заканчивается этим параметром)
// ссылка в меню автора function my_rcl_bar_add_author_menu(){ global $user_ID; if(!is_user_logged_in()) return false; //Проверяем авторизован ли пользователь //добавляем пункт меню rcl_bar_add_menu_item('my-profile-link', array( 'url'=>rcl_format_url(get_author_posts_url($user_ID),'user-info'), 'icon'=>'fa-id-card-o', 'label'=>'Карточка профиля' ) ); } add_action('rcl_bar_setup','my_rcl_bar_add_author_menu',10);
Функция rcl_bar_add_menu_item, как и в примере выше, принимает такие же аргументы, кроме счетчика.
6. Скроем реколлбар для гостей и уберем отступы
Иногда нужно чтобы гостям не показывался реколлбар (может некоторые лендинги). Эти страницы для гостей могут уже иметь все формы входа, дублировать в реколлбаре не нужно. Так отключим его для неавторизованных пользователей:
// отключим реколлбар для гостей function my_guest_hide_rclbr(){ if(is_user_logged_in()) return false; // если залогинен - прекращаем remove_action('wp_footer','rcl_recallbar_menu',3); } add_action('init','my_guest_hide_rclbr'); // и уберем отступы function my_guest_hide_rclbr_style(){ if(is_user_logged_in()) return false; $out = '<style>html {margin-top:0 !important;}'; $out .= '* html body {margin-top:0 !important;}</style>'; echo $out; } add_action('wp_footer','my_guest_hide_rclbr_style', 100);
7. Поменяем вид иконки-уведомления на примере "Корзины"
Если вам не нравится иконка-уведомление, которую использует автор дополнения или плагина, или вам нужно поменять текст, ссылку, - все это легко настраивается без необходимости лезть в ядро.
Есть фильтр rcl_bar_icons
Он содержит массив данных иконки-уведомления (класс иконки, урл, текст, счетчик):
// так выглядит массив Array ( [rcl-cart] => Array ( [icon] => fa-shopping-cart [url] => http://ваш-адрес-корзины/ [label] => Корзина [counter] => 0 ) )
Все это можно изменить обратившись к нужному массиву или ключу массива. Сменим саму иконку:
// сменим иконку у корзины в реколлбаре function my_change_icon_cart($icons){ $icons['rcl-cart']['icon'] = 'fa-cart-arrow-down'; // новая иконка return $icons; } add_filter('rcl_bar_icons','my_change_icon_cart',10);
8. Сменим иконку «В админку» в меню автора в реколлбаре
Аналогично, но только уже с помощью фильтра rcl_bar_menu
, можно сменить текст, ссылку, иконку и в меню автора:
// так выглядит массив Array ( [admin-link] => Array ( [url] => http://ссылка-в-админку [icon] => fa-external-link-square [label] => В админку ) )
Все также обратившись к нужному массиву и ключу - сменим иконку:
// сменим иконку "В админку" в реколлбаре, в меню автора function my_change_icon_author_menu_dashboard($icons){ $icons['admin-link']['icon'] = 'fa-tachometer'; // новая иконка return $icons; } add_filter('rcl_bar_menu','my_change_icon_author_menu_dashboard',10);
9. Выведем в реколлбаре баланс текущего пользователя
Простой способ в реколлбаре вывести баланс текущего пользователя:
// выведем в реколлбаре баланс текущего пользователя function otfm_add_balance(){ if(!is_user_logged_in()) return false; //Проверяем авторизован ли пользователь if(!rcl_exist_addon('user-balance')) return false; // если не активирован доп global $user_ID; $money = rcl_get_user_balance($user_ID); if(!$money) $money = 0; // баланс нулевой //добавляем иконку уведомления rcl_bar_add_icon('my_balance', // уникальный идентификатор array( 'icon'=>'fa-money', // иконка с сервиса https://fontawesome.com/v4.7.0/icons/ 'url'=> '', 'label'=>'Мой баланс', // подсказка по наведению 'counter'=> $money // значение ) ); } add_action('rcl_bar_setup','otfm_add_balance',10);
- проверяем залогинен ли пользователь.
- проверяем используется у нас на сайте дополнение личного счета.
- получаем баланс текущего пользователя с помощью функции rcl_get_user_balance
- и выводим его уже знакомой нам функцией
- урл оставляем пустым - иконка просто уведомляет нас о сумме средств
10. Моргание нужной иконки в реколлбаре (когда значение > 0)
Иногда когда значение иконки-уведомления становится отличным от ноля - можно все равно не заметить что есть к примеру новое сообщение, или уведомление. На этом примере я покажу как у дополнения RCL-Notification (Уведомления) анимировать иконку:
// моргаем нужной иконкой когда там значение > 0 function otfm_blink_notifi(){ $out = ' <script> (function($){ $(document).ready(function() { var otId = $("#rcl-notifications"); // id нужного нам блока var nuMber = $(otId).children(".rcb_nmbr").text(); if(nuMber > 0){ $(otId).find(".fa").addClass("otfm_blink"); } }); })(jQuery); </script>'; echo $out; } add_action('wp_footer','otfm_blink_notifi', 100); // и сами стили моргания function otfm_blink_notifi_style($styles){ $styles .= ' #recallbar .rcb_icons .fa.otfm_blink{ color: #ff504b; -webkit-animation: otfm_blink 2.5s ease-in-out infinite; animation: otfm_blink 2.5s ease-in-out infinite; } @keyframes otfm_blink { 50% {color:#c11d19;} } '; return $styles; } add_filter('rcl_inline_styles','otfm_blink_notifi_style',10);
- первая функция это небольшой скрипт, который смотрит на нужный нам идентификатор, и если значение там > 0, то он добавляет css класс.
А вторая функция - css стили. Сама анимация.
Идентификатор легко узнать открыв панель разработки браузера (f12) и нажав кнопку "Исследовать" - ткнуть на нужную нам иконку. Подробнее как работать с консолью здесь
Вторая функция использует фильтр rcl_inline_styles
- он встраивает инлайн стили. Убирает пробелы, переносы (минифицирует)
Но вместо данной функции просто стили можете вписать в ваш стилевой файл, и не использовать эту функцию.
11. Покажем кнопку последних тем форума в реколлбаре
смотрите на странице сниппетов к прайм форуму
12. Выведем меню плагина Query Monitor в реколлбаре
Данный сниппет выведет меню и статистику плагина Query Monitor. Данный плагин должен быть у вас включен.
Сниппет также поддерживает верификационную куку плагина (когда надо тестировать от лица гостя или другого пользователя)
Выпустил в виде отдельного дополнения Query Monitor to WP-Recall - Интеграция плагина Query Monitor с WP-Recall
Надеюсь что данное руководство позволит вам решить вопрос - как прокачать свой реколлбар.
По товарной метке "Recallbar" - вы найдете дополнения, что расширяют его.
Полезные материалы по кастомизации: в моей группе
Сниппеты
Большой FAQ - как для новичков, так и для разработчиков
Здравствуйте. Вывожу свое меню в реколбар, но выводится только верхний уровень без подменю. Подскажите, пожалуйста, можно ли это как-то поправить?