[ads_checkbox_area] – независимые флажки – это значит можно выбрать более одного варианта из предложенных.
Специальные атрибуты:
- checked – выбор по умолчанию порядковый номер, в случае если источник данных taxonomy то id таксономии или ярлык
- array – задает источник данных внешний массив
- taxonomy – задает источник данных одну из таксономий категорию или метки (category или post_tag), в этом варианте доступны дополнительные атрибуты:
- child_of – родительская категория-контейнер откуда взять список категорий
- include – включить категории, только указанные категории
- exclude – список категорий которые надо исключить
- дополнительные атрибуты добавляет функция – get_terms()
- terms – задает условие
- emsg – текст ошибки
- legend – текст легенды см. рисунок html элемент legend
Источник данных – внутреннее содержание:
[ads_checkbox_area name=ads_drink checked=2 legend=»Выберите напитки:» terms=$ emsg=»Выберите напитки!» ] tee=>Чай coffee=>Кофе beer=>Пиво milk=>Молок [/ads_checkbox_area]
1234567 | [ads_checkbox_area name=ads_drink checked=2 legend=«Выберите напитки:»terms=$ emsg=«Выберите напитки!» ] tee=>Чай coffee=>Кофе beer=>Пиво milk=>Молок[/ads_checkbox_area] |
Ту все по аналогии [ads_select] и [ads_radio_area]. Каждый новый пункт с новой строки пишем по парам значение=>описание через =>, значение – это то, что в конечном итоге будет сохранено в метаполе ads_drink.
checked=2 – означает что начальный выбор (по умолчанию) установлен на 3 элемент (пиво). В массивах первым по порядку идет нулевой элемент чай – будет нулевым, кофе – первым, пиво – вторым – такая вот извращенная логика у программистов 🙂
Источник данных – таксономии : категории, метки.
Тот же самый пример есть категорию-контейнер Action (id:24; ярлык:action) в ней сложены под категории: купить, продать, обменять, сдать в аренду, снять в аренду и тд, Теперь для каждого объявления организуем выбор действия:
… [ads_checkbox_area name=ads_action taxonomy=category child_of=24 legend=»Выберите действие:» terms=$ emsg=»Выберите действие!» /] …
12345678910 | ...[ads_checkbox_area name=ads_action taxonomy=category child_of=24 legend=«Выберите действие:» terms=$ emsg=«Выберите действие!»/]... |
child_of=24 правильно но лучше ярлык: child_of=action.
taxonomy=category или post_tag – указывать обязательно!
В отличии от [ads_select], здесь мы получаем данные с помощью WordPress функции get_terms( $taxonomies, $args ). Многие параметры в документации отсутствуют – так например нету include и exclude, но теме не менее они работают.
Преобразование ярлыков в id выполняется в плагине, работате только для атрибутов:
child_of – родительская категория контейнер
include – включить категории по списку например kyply,prodam,obmen …
exclude – исключить категории
checked – ярлык выбранной категории
! Атрибут checked здесь указываем не номер пункта по счету, а id или ярлык категории которую установить активной по умолчанию.
Источник данных – внешний массив
Возьмем опять массив с зайцами – принцип тот же, что и для ads_select:
в functions.php текущей темы или например ads_config.php создаем массив:
$php_var_name[] = ‘пустой’; $php_var_name[2] = ‘два зайца’; $php_var_name[3] = ‘три зайца’; $php_var_name[‘mnogo’] = ‘много зайцев’;
1234 | $php_var_name[] = ‘пустой’;$php_var_name[2] = ‘два зайца’;$php_var_name[3] = ‘три зайца’;$php_var_name[‘mnogo’] = ‘много зайцев’; |
и на странице с формой вставляем код:
…. [ads_checkbox_area name = ads_varname array = php_var_name /] ….
123 | ....[ads_checkbox_area name = ads_varname array = php_var_name /].... |
array – тут указываем имя массива (php переменная)
checked – выбранный по умолчанию пункт, в этом случае опять указываем порядковый номер элемента.
Считаем зайцев.
Вывод данных
Поскольку область чекбоксов предоставляет возможность множественного выбора в результате мы всегда получим массив данных даже если пользователь выбрал один элемент,
поэтому обычный вывод типа echo $ads_varname; тут не пройдет в данном случае мы увидим просто надпись Array.
Нужно предварительно подготовить вывод массива. Для первого примера с напитками можно использовать функцию implode, чтобы склеить все элементы массива в одну строку используя разделитель запятую с пробелом:
<?if(count($ads_drink)):?>Напитки: <?=implode(‘, ‘, $ads_drink);?> <br /><?endif?>
1 | <?if(count($ads_drink)):?>Напитки: <?=implode(‘, ‘, $ads_drink);?> <br /><?endif?> |
Тоже самое можно использовать для зайцев:
<?if(count($ads_varname)):?>Зайцы: <?=implode(‘, ‘, $ads_varname);?> <br /><?endif?>
1 | <?if(count($ads_varname)):?>Зайцы: <?=implode(‘, ‘, $ads_varname);?> <br /><?endif?> |
В случае когда источником данных выбраны категории – вывод можно оформить с помощью WordPress функции wp_list_categories() (пример для Action):
<?if(count($ads_action)):?> <b>Действие:</b> <ul class=’ads_action’> <?wp_list_categories( array(‘include’=>$ads_action, ‘title_li’=>») ); ?> </ul> <?endif?>
123456 | <?if(count($ads_action)):?><b>Действие:</b><ul class=‘ads_action’> <?wp_list_categories( array(‘include’=>$ads_action, ‘title_li’=>») ); ?></ul><?endif?> |
Как видно из примера мы передаем в функцию наш массив действий $ads_action в параметре include – что означает выбрать только заданные категории.
‘title_li’=>” – а это мы отключаем вывод родительского контейнера ul с заголовком.
Можно копнуть еще ниже и использовать http://codex.wordpress.org/Function_Reference/get_categories
Это все примеры для шаблона вывода типа post_default_template.php
Особенности проверки условия
Особенности проверки связаны все с тем же массивом данных в конечном результате у вас может возникнуть необходимость проверить количество выбранных элементов
для этого можно использовать функцию count($)
пример для напитков – потребуем пользователя выбрать от 2 до 3 вариантов:
[ads_checkbox_area name=ads_drink checked=2 legend=»Выберите напитки:» terms=»(count($)>=2) and (count($)<=3)» emsg=»Выберите напитки! От 2 до 3!» ] tee=>Чай coffee=>Кофе beer=>Пиво milk=>Молок [/ads_checkbox_area]<br/>
1234567 | [ads_checkbox_area name=ads_drink checked=2 legend=«Выберите напитки:»terms=«(count($)>=2) and (count($)<=3)» emsg=«Выберите напитки! От 2 до 3!» ] tee=>Чай coffee=>Кофе beer=>Пиво milk=>Молок[/ads_checkbox_area]<br/> |
Выравнивание чекбоксов в области
И на закуску делаем с помощью CSS красивое выравнивание флажочков width: 25%; – по 4 штук, проценты надо будет подобрать чтобы влазило самое длинное.
.ads_radio_area label{ white-space: nowrap; width: 25%; display: block; float: left; }
123456 | .ads_radio_area label{ white-space: nowrap; width: 25%; display: block; float: left;} |