Публикация в группе: Otshelnik-Fm - мои работы (код, плагины, дополнения, статьи и руководства)

Категории группы: Работаем с Wp-Recall

Добавлено в закладки: 12

В данной записи будут описываться примеры кода, решающие мелкие задачи для WordPress плагина WP-Recall. Полезная информация и коллекция ссылок.
Все сниппеты располагаются в файле functions.php вашей активной вордпресс темы.

Ссылки на другие полезные страницы:
Моя группа на этом сайте - где я публикую полезности к плагину.
Все группы - где другие пользователи также предлагают свои решения.
Большой FAQ - Знаете ли вы что… Факты о плагине WP-Recall и единая база для разработки под WP-Recall.
WP-Recall Handbook - Справочник по плагину WP-Recall. Факты, видео, ссылки на руководства для старта разработки под плагин. Дополнение для плагина WP-Recall.
API RCL - раздел сайта с документацией


 

Сниппеты:

  1. Проверяем - активирован плагин WP-Recall или нет
  2. Проверяем - активировано дополнение или нет
  3. Вставим инлайн стили (фильтр)
  4. Подключим свой шаблон
  5. Проверим - что мы в личном кабинете (своём, чужом)
  6. Получить ссылку на личный кабинет авторизованного пользователя
  7. Сформируем ссылку в личный кабинет или вкладку кабинета
  8. Проверим что мы во вкладке Чат
  9. Вывод количества непрочитанных сообщений в чате, в любом месте
  10. Удаление рейтинговой активности нужного пользователя
  11. Отменить функцию вывода рейтинга в одиночной записи, и вывести рейтинг записи в нужном месте
  12. Вывести полный рейтинг записи
  13. Вывести блок полного рейтинга автора (или комментатора)
  14. Как отключить область в группах на примере отключения сайдбара групп
  15. Проверить - существует ли область в группах на примере области sidebar
  16. Как после публикации в группе, оставаться на главной странице группы, а не в созданной записи
  17. Получить баланс конкретного пользователя
  18. Изменить баланс конкретного пользователя
  19. Удалим блок автора
  20. Статус пользователя - В сети/не в сети
  21. Расписание, крон задачи (crontab)
  22. Отключим кнопки: "черновик" и "удалить" в типе записей post
  23. Добавим в массив валют новую валюту - Киргизский Сом
  24. Человекопонятное время

Информация:

  1. Глобальные переменные WP-Recall
  2. Предопределенные константы плагина WP-Recall
  3. Предопределенные стили в админке на странице настроек WP-Recall
  4. Хуки – экшны (actions) и фильтры (filters)
  5. Фильтры вкладок личного кабинета
  6. Настройки WP-Recall в таблице wp_options
  7. Настройки WP-Recall в таблице пользователя wp_usermeta
  8. Имена файлов в корне дополнения (пишем свое дополнение)

Коллекции:

  1. Список шаблонов WP-Recall
  2. js хуки (actions) и фильтры
  3. Отдельная тема по реколлбар и куча сниппетов к нему
  4. Отдельная тема по форме входа и регистрации
  5. Защита от спам регистраций используя функционал Wp-Recall

 


 

 Проверяем - активирован плагин WP-Recall или нет:

Эту проверку необходимо делать, чтобы при деактивации этого плагина на вашем сайте не вылетала фатальная ошибка. Например когда вы вставляете код (свой виджет) в файл функций темы или в другие файлы темы

 


 

 Проверяем - активировано дополнение или нет:

Полезно проверить, если у вас дополнение зависит от, как в примере ниже, рейтинговой системы (уникальный id аддона - имя его папки):

Или второй вариант:

Или третий вариант:

- id дополнения - это название папки дополнения
Описание функции rcl_exist_addon
В случае с функцией - если вы размещаете код в functions.php или как отдельный плагин - выполняйте предыдущий сниппет - проверяйте что WP-Recall активирован. Иначе при отключении WP-Recall увидите ошибку о обращении к неизвестной функции. В случае с дополнением - такая проверка не имеет смысла - ведь допы работают только при включенном реколл.


 

 Вставим инлайн стили:

Когда стилей у вашего дополнения мало (1-3 правило), то целесообразности подключать их в отдельный css файл нет. Или если стили формируются у вас динамически - например настройки стилей из настроек админки, то есть смысл подключить их инлайном - т.е. в тело html страницы.

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

- при проверке кабинета мы вернули $styles, а ниже - если мы в кабинете, дописали свои стили (конкатенация). Без открывающих и закрывающих тегов style! т.е. как мы их пишем в стилевом файле.
Прелесть этого фильтра - что он сам произведет всю минификацию - сожмет в одну строку и удалит пробелы.


 

 Подключим свой шаблон:

В своем дополнении создайте папку templates
В ней разместите свой php шаблон (к примеру otfm-card.php)
и в своей функции вы можете обратиться к нему так:

Описание rcl_get_include_template
Подключает из вашего аддона из папки:
add-on/our-addon/templates/ шаблон, но предварительно проверяет его наличие по пути:
wp-content/wp-recall/templates/
Если он находит его в пользовательской папке - берет оттуда.

Тогда пользователи смогут воспользоваться функционалом шаблонов WP-Recall


 

 Проверим - что мы в личном кабинете (своём, чужом):

Способ 1:

Способ 2:

Эта функция проверяет выводится ли сейчас личный кабинет,
Если передать в нее ИД юзера, то она проверит выводится ли ЛК этого пользователя.

В случае с функцией - если вы код размещаете код в functions.php или как отдельный плагин - проверяйте что WP-Recall активирован (первый сниппет). Иначе при его отключении увидите ошибку о обращении к неизвестной функции. В случае с дополнением - такая проверка не имеет смысла - ведь допы работают только при включенном реколл.


 

 


 

Учитывает как выводится кабинет (шорткодом или через author.php)

В зависимости от вывода личного кабинета (шорткодом или через author.php) будет формироваться урл
Верно подставляться к вкладке & или ? (&tab=forum или ?tab=forum)

Вернет:
http://across-ocean.otshelnik-fm.ru/account/?user=1&tab=forum
или
http://across-ocean.otshelnik-fm.ru/author/wawan/?tab=forum


 

 Проверим что мы во вкладке Чат:

 


 

 Вывод количества непрочитанных сообщений в чате, в любом месте:

- функция принимает id пользователя, чье кол-во непрочитанных сообщений нужно получить


 

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

Удалить всю рейтинговую активность конкретного пользователя без удаления самого пользователя:

Где 123 - идентификатор нужного пользователя.

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


 

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

- теперь рейтинг у постов не будет появляться.

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

- в нее передаете id пользователя и тип записи

Подробней в этом руководстве "Как вывести форму рейтинга записи / комментария в любом месте?"


 

 Вывести полный рейтинг записи:

- описание функции rcl_get_total_rating


 

 Вывести блок полного рейтинга автора (или комментатора):

Или для комментатора вариант 2:

global $comment уже содержит рейтинг - запросов к бд лишних делать не надо:

 


 

Деактивирует сайдбар. Но вы можете указать кроме sidebar - "content" или "footer"


 

 Проверить - существует ли область в группах на примере области sidebar:

- аналогично, кроме sidebar, можете проверять "content" или "footer" область группы


 

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

- после публикации в группе - автор будет возвращен в группу


 

 Получить баланс конкретного пользователя:

- функция принимает id пользователя
Описание функции rcl_get_user_balance


 

 Изменить баланс конкретного пользователя:

$balance - число
$user_id - ИД пользователя
3 аргумент - комментарий к обновлению баланса
Описание функции rcl_update_user_balance


 

 Удалим блок автора:

И выведем блок автора в нужном нам месте (размещаете в нужном файле)

Пример 2 - удалим блок автора в публикациях всех групп:

 

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

9 - терм. Получается так https://yadi.sk/i/_z5OKgDt39xa4Q

Пример 4 - удалим блок автора у определенного типа записи:

Пример 5 - удалим блок автора в определенных рубриках


 

 Статус пользователя - В сети/не в сети:

Такст "Не в сети 3 часа". Или значок онлайна:

$user_ID - id нужного юзера.

Пример 2:

надпись "В сети" "Не в сети"

$user_ID - id нужного юзера. А на месте текста можете вывести свои иконки


 

 Расписание, крон задачи (crontab):

Описал здесь
Анонс с 14-й версии реколл

Пример: запустим нашу функцию раз в час

 


 

 Отключим кнопки: "черновик" и "удалить" в типе записей post:

 


 

 Добавим в массив валют новую валюту - Киргизский Сом:

для дополнения Recall Commerce

 


 

 Человекопонятное время:

вернет человечное время: 1 минута, 1 час, 17 часов, 5 месяцев, 2 года.

 


 

Информация:

 


 

 Глобальные переменные WP-Recall:

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

$active_addons - массив с данными о активированных аддонах (id и полный путь на сервере до него)
$user_LK - число. получает id юзера, в чьем лк находимся. Определена только в личном кабинете
$rcl_user_URL - строка. хранит урл до ЛК текущего юзера: http://ваш-сайт/author/petrovich

$rcl_options - массив с данными о всех глобальных настройках реколл
$rcl_avatar_sizes - массив. Зарегистрированные размеры аватарок
$rcl_userlk_action - строка. Определяется в личном кабинете пользователя.
Выводит дату последней активности пользователя чей ЛК просматриваете (дата вида: 2016-05-06 00:40:05)
$rcl_smilies - массив. Выводится в ЛК собеседника. Содержит коды смайлов и путь до смайла
$rcl_chat - объект настроек чата
$rcl_tab - объект данных вкладки. Содержит в массиве полезные данные.
$rcl_tabs - массив с данными вкладок (табов) личного кабинета
$rcl_order_tabs - массив порядка вывода вкладок ЛК
$rcl_rating_types - массив зарегистрированных типов рейтинга. Содержит тип рейтинга, название, иконку, количество баллов и др.

$rcl_user - массив. Хранит параметры пользователя выводимого через шорткод userlist - и везде где используется шаблон user-rows.php
Для просмотра данных распечатывайте переменную из файла шаблона вывода пользователя, например: user-rows.php
$rcl_users_set - массив параметров настроек шорткода userlist

// группы
$rcl_group_widgets - Массив. Хранит данные виджетов группы. ID виджета, Название, класс, размещение, статус
$rcl_group - массив. Определяется на странице группы. Содержит ID группы, имя, id администратора, статус группы
количество участников группы роль текущего пользователя и другие данные
$rcl_group_area - массив. Хранит зарегистрированные области в группе (сайтбар, контент, футер)

// магазин
$rmag_options - массив. Хранит настройки магазина
$CartData - массив. Данные в корзине. Урл до страницы корзины, Количество товара, его id и цена, общая сумма в корзине
$product - массив. Содержит данные заказа магазина реколл. Определяется на вкладке "заказы" и в отправляемом письме
$products - массив. Все продукты в корзине или данные на отдельной записи товара
$order - массив. Хранит контент заказа
$orders - массив. Данные заказов на вкладке "заказы"
$productlist - массив. Данные шорткода productlist

// публикации
$formData - массив. Параметры формы публикации
$posts - массив. Определяется в ЛК на вкладке опубликованных записей пользователя. Хранит данные записей юзера


 

 Предопределенные константы плагина WP-Recall:

RCL_URL - урл до плагина http://ваш-сайт/wp-content/plugins/wp-recall/
RCL_PATH - Полный путь на сервере до папки плагина /home/data/www/ваш-сайт/wp-content/plugins/wp-recall/
RCL_UPLOAD_URL - урл до папки реколл загрузок http://ваш-сайт/wp-content/uploads/rcl-uploads/
RCL_UPLOAD_PATH - Полный путь на сервере до папки реколл загрузок /home/data/www/ваш-сайт/wp-content/uploads/rcl-uploads/
RCL_TAKEPATH - Полный путь на сервере до папки /home/data/www/ваш-сайт/wp-content/wp-recall/
RCL_PREF - префикс бд вашего сайта и реколл. Например wp_rcl_
RMAG_PREF - префикс бд вашего сайта и магазина реколл. Например wp_rmag_


 

 Предопределенные стили в админке на странице настроек WP-Recall:

Можно использовать для выделения текста в админке сайта - в настройках https://yadi.sk/i/lzyQH5Uh3ETNaY
с версии 14.4 в админке в файле admin.css для разработчиков добавились стили:

т.е. по методологии БЭМ мы можем у аддона указать стиль текста
например:

- так мы зададим красный цвет 16 пиксельного болдового шрифта

В админке, для стилизации, вы можете применять набор иконок dashicons https://developer.wordpress.org/resource/dashicons/#dismiss (Включено в вордпресс. Это не реколл)


 

 Хуки – экшны (actions) и фильтры (filters):

 


 

 Фильтры вкладок личного кабинета:

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

Смотрим что в них:

 


 

 Настройки WP-Recall в таблице wp_options:

custom_profile_search_form - настройка поиска аддона profile_search

primary-rmag-options - настройки магазина

rcl_active_addons - данные об активированных дополнениях

rcl_addons_need_update - в массиве аддоны требующие обновления

rcl_cart_fields - данные о созданных полях формы заказа дополнения магазина

rcl_global_options - здесь хранятся все глобальные настройки плагина и его дополнений

rcl_fields_% - данные о созданных произвольных полях формы публикации для различных типов записей, где % - post_type (например rcl_fields_post_1)

rcl-key - ваш rcl-key

rcl_order_tabs - настройка имен вкладок и порядок их сортировки

rcl_profile_default - данные о выводимых дефолтных полях профиля (логин, имя, отображаемое имя, статус (описание))

rcl_profile_fields - созданные произвольные поля профиля и их настройки

rcl_tempgallery - массив временных данных аддона публикации

rcl_version - текущая версия реколл

rcl_active_template - активный wp-recall шаблон

widget_rcl-new-users - виджет новых юзеров
widget_rcl-online-users - виджет кто онлайн
widget_rcl-primary-panel - виджет панели управления
widget_widget-minibasket - виджет корзины

rcl_fields_custom_tabs - массив произвольных вкладок


 

 Настройки WP-Recall в таблице пользователя wp_usermeta:

addons_per_page - количество аддонов на одной странице аддон менеджера админки (по умолчанию 20-ть)

admin_group_% (например admin_group_17) в какой группе админит (старые данные аддона групп. Эти данные аддон груп хранит в своей таблице)

rcl_avatar - строка. хранится путь до аватарки

rcl_cover - строка, хранит путь до обложки кабинета

social_meta_rcl - массив. социальные настройки пользователя

tempgallery - массив временных данных, формы публикации, конкретного пользователя

user_group_% - (например user_group_18) в какой группе состоит (старые данные аддона групп. Эти данные аддон груп хранит в своей таблице)

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


 

 Имена файлов в корне дополнения (пишем свое дополнение):

Каждый addon (дополнение) WP-Recall может содержать следующие файлы:

index.php - обязателен. Основной файл с кодом
info.txt - обязателен. Необходим для описания необходимой информации. Описание
activate.php - срабатывает единожды в момент активации дополнения. Например предустановка начальных настроек, создание таблиц в БД
deactivate.php - срабатывает единожды в момент деактивации дополнения.
delete.php - срабатывает единожды в момент удаления дополнения. Подчищаем за собой (правило хорошего тона в программировании)
readme.txt - Разметка readme-файла для товара


 

Коллекции:

 


 

 Список шаблонов WP-Recall:

- все шаблоны плагина WP-Recall собраны здесь


 

 js хуки (actions) и фильтры:

Собрал и описал работу здесь


 

 Отдельная тема по реколлбар и куча сниппетов к нему:

Вынес в отдельную тему. Здесь


 

 Отдельная тема по форме входа и регистрации:

Читаем подробней: Всё о форме входа и регистрации WP-Recall - часть 1
Всё о форме входа и регистрации WP-Recall — часть 2. Шаблоны, хуки, кастомизация


 

 Защита от спам регистраций используя функционал Wp-Recall:

В этой заметке 3 способа


 

p.s. Сниппеты будут коллекционироваться тут!

9

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

163

Вся лента по разработке здесь: http://across-ocean.otshelnik-fm.ru/?author=1&tab=notes&gpf=2160

http://across-ocean.otshelnik-fm.ru/ - список моих работ к плагину WP-Recall

Комментарии: 997Публикации: 118Регистрация: 27-01-2013Продаж/Покупок: 4997/119