Внимание! Данная инструкция устарела, использовать ее в качестве руководства к действию нельзя!
Новый порядок добавления опций описан в статье.
_____________________________
Это устаревший порядок формирования опций к плагину и дополнениям, еще более старый описан в статье.
! Так как построение массива опций к плагину и его дополнениям используют функционал произвольных полей плагина WP-Recall и если вы с ним не знакомы, то перед прочтением этот статьи рекомендуется ознакомиться с его описанием.
Основы
Для того, чтобы иметь возможность добавить свой набор опций на страницу настроек плагина WP-Recall и его дополнений, следует использовать фильтр 'admin_options_wprecall'. Общий принцип добавления своих опций выглядит так:
add_filter('admin_options_wprecall','my_addon_options'); function my_addon_options($content){ $opt = new Rcl_Options(__FILE__); $content .= $opt->options( __('Общий заголовок блока опций'), array( $opt->options_box( __('Заголовок первого блока','wp-recall'), array( //массив первой опции //массив второй опции //массив третье опции ) ), $opt->options_box( __('Заголовок второго блока','wp-recall'), array( //массив первой опции //массив второй опции //массив третье опции ) ) ) ); return $content; }
Массив каждой опции это стандартный набор произвольных полей, описанный в статье о произвольных полях плагина WP-Recall, но для опций можно указывать некоторые дополнительные параметры:
- help - выводит вопросительный знак, при нажатии на который появляется диалоговое окно с указанным текстом
- childrens - массив дочерних опций
- group - группировка значений опций внутри массива
Особо полезным из которых может быть 'childrens'. Этот параметр содержит массив дочерних полей, с указанием значения при котором дочерние поля будут появляться, например:
array( 'type' => 'select', 'title'=>__('Родительская опция'), 'slug'=>'option_name', 'values'=>array( 0 => __('Не выбрано'), 1 => __('Первое'), 2 => __('Второе') ), 'childrens' => array( 1 => array( array( 'type' => 'text', 'title'=>__('Дочерняя опция 1'), 'slug'=>'child_name1' ) ), 2 => array( array( 'type' => 'text', 'title'=>__('Дочерняя опция 2'), 'slug'=>'child_name2' ) ) ) )
Здесь приведен массив родительской опции, для которой были указаны две дочерние опции через параметр 'childrens'. Этот параметр содержит указание, что при выборе значения "Первое" родительской опции будет предложена к заполнению первая дочерняя опция, а при выборе значения "Второе" - вторая дочерняя опция, т.е. значение ключа массива дочерних опций соответствует значению родительской опции при которой дочерние опции будут появляться. В свою очередь внутри дочерних опций также можно объявить свои дочерние опции и они также будут работать.
Спасибо и за это описание.
Работы будет конечно много чтобы все свои допы привести к одному стандарту настроек. Но чтож поделать - жизнь идет и плагин растет и многие разрозненные функции встают на единые рельсы. Мы от состава отставать не будем и догоним - со временем))
оставил бы старый вариант, но пришлось бы кастылять, а нам это не надо, зато теперь доступен весь функционал произвольных полей. Это ли не песня)
Это верно. Главное для пользователя ничего не поломается. А для программистов - ну чтож обратная совместимость есть. Время переделать есть. Кстати - ты старый метод как deprecated пометил? Он будет сообщать в нотисах что этот метод старый и есть новый метод для работы с настройками? Ну чтобы он нам при дебаге напоминал сделать перевод на новые рельсы.
Понятное дело что старый метод и год будет работать - но уж если плагин идет вперед - то и мы должны актуальное апи использовать
идея хорошая, помечу
Очень давно хотел множественные поля для своего плагина https://codeseller.ru/products/user-title-by-rating/
Сейчас там данные по рейтингу - званию хранятся в обычном текстовом поле вида рейтинг:звание
Можно ли благодаря новым опциям сделать бесконечное поле в котором будет 2 подполя для указания рейтинга и звания?
бесконечное поле..., хм, сейчас можно использовать динамические поля, но это не то, хотя может и пристроишь.
Но я под твою задачу сам бы не заморачивался, указывал бы такие настройки через textarea, а потом бы парсил.
Ну у меня все так и сделано, но просто если бы было 2 поля внутри одного и плюсиком их можно было бы дополнять (сейчас плюсиком только 1 поле можно добавлять) это было бы более красиво что ли.
Сейчас как с динамическими полями: есть 1 поле, жмешь плюсик добавляется еще 1.
Мне надо: есть 2 поля в ряд, жмешь плюсик добавляются еще 2 (например обоим в name одинаковый индекс добавляется)
И при отправке они собираются в массив:
array (
array (
'rating' = > 1,
'title' => Титул
),
array (
'rating' = > 2,
'title' => Титул 2
),
);
ну это какая то кастомная задача, не про произвольные поля
Ну т.е. так https://imgur.com/a/cSxRh я все же сделать не смогу?
на дефолтном функционале нет, а вообще можно же свою верстку и свой скриптик написать к ней, вывести через поле типа custom
А есть где нибудь на codepen подобное? В живую бы посмотреть пощелкать. Да и понять область применения и реализацию по внешнему виду. Мультивыбор вон мы на гитхабе скрипт нашли - пока наглядно не увидишь и не понятно как организовать подобное в дизайне
Будем догонять, как верно выше подметил Владимир)
Спасибо за мануальчик!
Еще раз перечитал, день запаристый у меня вышел и не с первого раза втыкаюсь.
А это же круто с полями.