Как cделать выпадающий список категорий в форме ввода

1) Все рубрики объявлений необходимо сгруприовать. Для этого помещаем их в служебную рубрику контейнер назовем ее например Объекты. Запоминаем id контейнера, далее в процессе работы нам будет очень удобно получать весь список рубрик с помощью стандартных WordPress функции wp_list_categories, wp_dropdown_categories используя в качестве аргумент параметр ‘child_of’.
Теперь добавляем в контейнер произвольные категории, подкатегории, под-подкатегории сколько угодно уровней и количество.

2) Теперь нам надо отменить стандартный выбор категорий в самом плагине – открываем файл ads_config.php (он должен быть непосредственно в папке плагина в корне) если его нет, то надо его создать.
Далее прописываем туда такой код:

$ads_config[‘form_templates’][‘all’] = ‘/form_default_template.php’;

1 $ads_config[‘form_templates’][‘all’] = ‘/form_default_template.php’;

form_default_template.php – это наш шаблон формы, находится он в директории /templates
Можете создать свою форму и положить ее в /templates . Теперь кликнув по ссылке “добавить объявление” вы должны сразу попасть на эту форму миную этап выбора категорий.

3) Открываем шаблон формы ввода form_default_template.php разметка здесь задается здесь с помощью таблицы – ничего сложного. Нам надо добавить новый управляющий элемент, в удобном месте добавляем новую строку tr

<tr><td>Объекты<font color=»red»>*</font></td> <td><?=ads_category_select(3,’ads_basecat’)?> новострой: <input type=»checkbox» name=»ads_novostroi» value=»новострой» /> <br /><?$this->error_msg(‘ads_basecat’)?> </td></tr>

12345 <tr><td>Объекты<font color=«red»>*</font></td><td><?=ads_category_select(3,‘ads_basecat’)?>новострой: <input type=«checkbox» name=«ads_novostroi» value=«новострой» /><br /><?$this->error_msg(‘ads_basecat’)?></td></tr>

Поясняю : сам список добавляется функцией ads_category_select(3,’ads_basecat’) где 3 это id той самой рубрики контейнера Объекты вам надо поменять на свой 🙂 ads_basecat – имя списка select name=’ads_basecat’. Сохраняем перезагружаем все теперь вы должны увидеть выпадающий список жаждущий вашего выбора.

4) Но это еще не все! Нам надо добавить проверку этого поля, поэтому раскоментируем пользовательский фильтр в самом верху шаблона, если кто не знает надо раскоментировать строчки.
и в этот фильтр добавить проверку

//пользовательский фильтр проверка введеных данных if( !function_exists(‘ads_form_filter’) ){ function ads_form_filter($_post){ if(!$_post[‘ads_basecat’]){ $_post[‘error’][‘ads_basecat’] = ‘Выберите объект!’; } ………… ………… } }

1234567891011   //пользовательский фильтр проверка введеных данныхif( !function_exists(‘ads_form_filter’) ){    function ads_form_filter($_post){      if(!$_post[‘ads_basecat’]){         $_post[‘error’][‘ads_basecat’] = ‘Выберите объект!’;      }      ............      ............     }}

Проверяем – оставим список без выбора и нажимаем кнопку отправить должно выскочить сообщение ‘Выберите объект!’.

P.S.
Вместо моей функции ads_category_select можно использовать wp_dropdown_categories там можно задать много больше настроек и тогда необязательно будет группировать объявления в контейнер, но это уже самостоятельно.