Внимание! Данная инструкция устарела, использовать ее в качестве руководства к действию нельзя!
Новый порядок добавления опций описан в статье.
_____________________________
Это устаревший порядок формирования опций к плагину и дополнениям, еще более старый описан в статье.
! Так как построение массива опций к плагину и его дополнениям используют функционал произвольных полей плагина 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 подобное? В живую бы посмотреть пощелкать. Да и понять область применения и реализацию по внешнему виду. Мультивыбор вон мы на гитхабе скрипт нашли - пока наглядно не увидишь и не понятно как организовать подобное в дизайне
Будем догонять, как верно выше подметил Владимир)
Спасибо за мануальчик!
Еще раз перечитал, день запаристый у меня вышел и не с первого раза втыкаюсь.
А это же круто с полями.