Привет. Эта заметка для разработчиков дополнений. Последние обновления WP-Recall стряхнуло покрытой пылью плагин (глобально ничего не происходило в нём > 3 лет) и начались глобальные изменения.
Здесь я расскажу как я обновил свои 55 дополнений за месяц в условиях вынужденной необходимости и не сошел с ума. Хотя нет - от выпитого кофе дергается глаз 😖
Хочу озвучить такое наблюдение:
не верьте что ваши дополнения работают - только лишь потому, что по ним никто вам репорт не создал на форуме поддержки!
Я это обнаружил на примере нескольких дополнений. У одного было 80 активных установок и оно распространялось бесплатно. Почему пользователи молчат? ну... Вы в магазине купили хлеб, пришли домой и поздно вечером обнаружили что он заплесневелый. Пойдете вы из-за такой мелочи разбираться? Большинство нет. Просто выбросите хлеб. Возможно к такому продавцу не пойдёте больше.
Так что внимательно перепроверьте свои дополнения - даже если пользователи вам никакого фидбека не давали. Так после каждого обновления реколл делать не нужно - но вот именно из за последних 16.21, 16.22, 16.23 - это сделать стоит. Об этом например мой второй пункт расскажет.
Здесь будет - на что стоит обратить внимание поиском по коду.
Я работаю в нетбинс и там каждый новый доп - отдельный проект. Поэтому я просто запускаю фразу - поиск по проектам и нахожу искомое:
Итак - поехали!
1. Апи новых настроек
(3-я версия за всю историю плагина) описано здесь
Тут все просто: вот базовый шаблон:
// где prefixaddon - ваш уникальный префикс add_filter( 'rcl_options', 'prefixaddon_admin_addon_options' ); function prefixaddon_admin_addon_options( $options ) { // создаем блок $options->add_box( 'prefixaddon_box_id', array( 'title' => 'Настройки ИМЯ ДОПОЛНЕНИЯ', 'icon' => 'fa-envelope-open-o' ) ); // создаем группу 1 // обратите внимание что prefixaddon_group_1 - цифра меняется у новой группы. // так как я пишу - не важно. Главное чтоб у вас там была уникальная строка $options->box( 'prefixaddon_box_id' )->add_group( 'prefixaddon_group_1', array( 'title' => 'ПОДЗАГОЛОВОК 1-Й ГРУППЫ НАСТРОЕК:' ) )->add_options( array( [ 'title' => '', ] ) ); // создаем группу 2 $options->box( 'prefixaddon_box_id' )->add_group( 'prefixaddon_group_2', array( 'title' => 'ПОДЗАГОЛОВОК 2-Й ГРУППЫ НАСТРОЕК:' ) )->add_options( array( [ 'title' => '', ] ) ); return $options; }
- с этого шаблона я стартую все настройки.
Потом просто массив полей:
- я закидываю вместо того, что указал выше.
Этот шаблон помогает мне стартануть настройки. В нетбинс его можно создать как отдельный сниппет и например через горячие клавиши: rcs + tab
- я настроил вставку этого шаблона.
Данный пункт поможет тем, у кого апи настроек не первой версии, а второй. Там просто массивы перекинуть надо на то место, что я выделил скрином выше. С 1-м апи, переход на второе - надо понять структуру полей - но там вроде все просто:
2-й вариант апи настроек - массивы:
[ 'title' => '', 'type' => 'number', 'slug' => '', 'help' => '', 'notice' => '', ], [ 'title' => '', 'type' => 'radio', 'slug' => 'gnp_day', 'values' => [ 'Mon' => 'Пн', 'Tue' => 'Вт'], 'default' => 'Tue', 'help' => '', 'notice' => '', ],
- ну ведь просто? Я думаю с 1-го на 2-й вам только "копировать-вставить" надо делать в этот шаблон выше. Такая работа - утомительная - но ничего сложного.
2. Потерянные опции.
Просто убедиться что страница настроек у вас есть - этого оказалось недостаточно. С десятком моих дополнений вышла неприятная особенность: страница настроек есть, пункт настроек тоже присутствует, а вот в нём опции не сохраняются. Причина - это тип поля 'type' => 'custom'
Что в нем не так? Ищите в своем settings.php это: wp_dropdown_pages(
фрагмент кода страницы настроек:
'content' => wp_dropdown_pages( array( 'selected' => rcl_get_option( 'sstc_page' ), 'name' => 'global[sstc_page]', 'show_option_none' => 'Не выбрано', 'echo' => 0 ) ),
- именно в global[sstc_page]
переименуйте в rcl_global_options[sstc_page]
Найдите у себя все использования global[
и переименуйте. Настройки начнут сохраняться.
Я меня именно эта строка в кастомном поле и список страниц и загрузку картинок и своя верстка группы инпутов - я везде столкнулся что global[
переименовать в rcl_global_options[
3. Пропавший фильтр.
Фильтр rcl_custom_field_options
не существует (с новым апи и структурой данных оставлять его было нельзя). Поищите по его названию - может где использовали.
Ему на замену пришел rcl_field_options
В прошлом был массив, теперь объект. Распечатывайте и смотрите данные. Просто переименовать фильтр - не выйдет.
Я решал этот вопрос например тут - подглядите
4. Данные уже не те.
Изменился тип хранения аватарки и обложки в мета поле юзера. Ищем rcl_cover
и rcl_avatar
. Раньше хранился прямой путь до аватарки. Сейчас число - id загруженной авы. Я раньше много допов и виджетов строил на этих данных. Теперь надо проверять через is_numeric()
на новые значения
т.к. раньше был прямой путь до авы нужного юзера - я экономил на запросах в БД. Сейчас использовать get_avatar()
или напрямую выбирать id из меты пользователя и потом получать путь до картинки - разницы нет.
5. Кнопка съехала.
rcl_get_button(
- поищите у себя. Старый вариант 1м аргументом принимал строку. Новый - массив. Но это единственное изменение из ядра реколл, что не ломает ваш доп. Просто стили старых кнопок подцепятся и будет криво. Передавайте в функцию построения кнопки массив.
6. Аплоадер.
По загрузке аватарки и обложки в профиле и группах - если у вас кастомные эти вещи (шаблон ЛК например) - посмотрите. В дополнении Group Theme Replace я использовал старый аплоадер реколл, верней его форк чтоли и ссылался на несуществующие функции. Посмотрите это руководство если с аплоадером у вас также возникли проблемы . ну и подглядеть можно как в ядре загрузка авы происходит. Но это самый редкий случай. Хоть он у меня и отнял прилично времени на переработку.
Это все критичные случаи что я записал в блокнот и все допы по этим пунктам проходил. Прошел 55 дополнений. И это еще не все. Радует что премиум допы (процентов 90% из них) я проверил. И что популярные (с максимальным кол-вом установок) бесплатные допы тоже проверил и пофиксил.
Поделился с вами т.к. месяц прошел с момента массовых изменений - а на форуме воникают вопросы с проблемами настроек и потому что авторы скрыли свои допы в черновики - "Верну, как разберусь" - а за месяц так и не разобрались.
Надеюсь эта шпаргалка вам поможет.
Данную запись буду пополнять новыми пунктами по мере сил. Впереди еще большие изменения ядра. Но это вы узнаете из новостей сайта.
Спасибо, Владимир, за подробный гайд по приведению дополнений "в чувство")
Спасибище, перенесу себе и вернусь к некоторым допам, как время появится.
Спасибо!!!