[ads_checkbox_area] – область независимых переключателей (галочки)

[ads_checkbox_area] – независимые флажки – это значит можно выбрать более одного варианта из предложенных.
Специальные атрибуты:

  1. checked – выбор по умолчанию порядковый номер, в случае если источник данных taxonomy то id таксономии или ярлык
  2. array – задает источник данных внешний массив
  3. taxonomy – задает источник данных одну из таксономий категорию или метки (category или post_tag), в этом варианте доступны дополнительные атрибуты:
    1. child_of – родительская категория-контейнер откуда взять список категорий
    2. include – включить категории, только указанные категории
    3. exclude – список категорий которые надо исключить
    4. дополнительные атрибуты добавляет функция – get_terms()
  4. terms – задает условие
  5. emsg – текст ошибки
  6. 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;}