Пример формы поиска для ads-wordpress

Чтобы нам было проще подключать форму в текущую дизайн тему создаем отдельный файл с кодом формы поиска ads_searchform.php и закидываем его в папку с нашей темой. Подключать файл можно где угодно, но на мой взгляд лучше для этого подходит sidebar.php подклюячаем:

<div class=»box ads_search»> <? include(TEMPLATEPATH . ‘/ads_searchform.php’);?> </div>

123 <div class=«box ads_search»><? include(TEMPLATEPATH . ‘/ads_searchform.php’);?></div>

Код самой формы:

<? if( !class_exists(‘HTML_FormPersister’) ) include_once WP_PLUGIN_DIR.’/ads-wordpress/FormPersister.php’; if(!class_exists(‘HTML_FormParser’)){ class HTML_FormParser extends HTML_FormPersister{ function process($st) { $this->fp_autoindexes = array(); return HTML_SemiParser::process($st); } } } global $ads_options; $select_rub = wp_dropdown_categories(array(‘child_of’ =>$ads_options[‘ads_base_category’], ‘hide_empty’ => 0, ‘hierarchical’ => 1, ‘name’=>’category__and[]’,’echo’=>0)); $select_rub = preg_replace(‘~<select[^>]+>~’,’<option class=»level-0″ value=»»>——</option>’,$select_rub); $select_loc = wp_dropdown_categories(array(‘child_of’ =>$ads_options[‘ads_location_root’], ‘hide_empty’ => 0, ‘hierarchical’ => 1, ‘name’=>’category__and[]’,’echo’=>0)); $select_loc = preg_replace(‘~<select[^>]+>~’,’<option class=»level-0″ value=»»>——</option>’,$select_loc); ob_start(); ?><!—create the searchfield—> <form class=»» method=»get» id=»searchform» name=»searchform» action=»<?php bloginfo(‘home’); ?>»> <table> <tr> <th>Поиск текста:</th> <td><input type=»text» value=»<?php echo wp_specialchars($s, 1); ?>» name=»s» id=»s» size=»24″ /></td> </tr> <tr> <th>Рубрика:</th> <td><?=$select_rub; ?></td> </tr> <tr> <th>Город/район:</th> <td><?=$select_loc; ?></td> </tr> <tr><th>Время:</th><td> <select name=»post_date» size=»1″> <option value=»»>——</option> <option value=»<? echo date(‘Y-m-d’, strtotime («-1 day»)); ?>»>за сутки</option> <option value=»<? echo date(‘Y-m-d’, strtotime («-3 day»)); ?>»>за 3 дня</option> <option value=»<? echo date(‘Y-m-d’, strtotime («-7 day»)); ?>»>за 7 дней</option> <option value=»<? echo date(‘Y-m-d’, strtotime («-1 month»)); ?>»>за текущий месяц</option> </select> </td> </tr> <tr> <th>Цена у.е.:</th> <td> от<input name=»ads_price[between][0]» size=»4″ />до<input name=»ads_price[between][1]» size=»4″ /> <select style=»width: 3em» name=»ads_order[ads_price]» size=»1″> <option value=»»>——</option> <option value=»asc»>возр.</option> <option value=»desc»>убыв.</option> </select> </td> </tr> </table> <input type=»submit» value=»Поиск» /> </form> <? $se_form = ob_get_contents(); ob_end_clean(); $ppb = new HTML_FormParser(); $st = $ppb->process($se_form); $st = preg_replace(‘~<div id=»ads_copyright_div»>.*</div>~siU’, », $st); echo $st; ?>

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 <?if( !class_exists(‘HTML_FormPersister’) )    include_once WP_PLUGIN_DIR.‘/ads-wordpress/FormPersister.php’;if(!class_exists(‘HTML_FormParser’)){    class HTML_FormParser extends HTML_FormPersister{        function process($st)            {                    $this->fp_autoindexes = array();                 return HTML_SemiParser::process($st);             }    }}  global $ads_options;$select_rub = wp_dropdown_categories(array(‘child_of’ =>$ads_options[‘ads_base_category’],                                            ‘hide_empty’ => 0, ‘hierarchical’ => 1,                                            ‘name’=>‘category__and[]’,‘echo’=>0));$select_rub = preg_replace(‘~<select[^>]+>~’,‘<option class=»level-0″  value=»»>——</option>’,$select_rub); $select_loc = wp_dropdown_categories(array(‘child_of’ =>$ads_options[‘ads_location_root’],                                            ‘hide_empty’ => 0, ‘hierarchical’ => 1,                                            ‘name’=>‘category__and[]’,‘echo’=>0));$select_loc = preg_replace(‘~<select[^>]+>~’,‘<option class=»level-0″  value=»»>——</option>’,$select_loc); ob_start();?><!create the searchfield><form  class=«» method=«get» id=«searchform» name=«searchform» action=«<?php bloginfo(‘home’); ?>«> <table><tr><th>Поиск текста:</th><td><input type=«text» value=«<?php echo wp_specialchars($s, 1); ?>« name=«s» id=«s» size=«24» /></td></tr> <tr><th>Рубрика:</th><td><?=$select_rub; ?></td></tr> <tr><th>Город/район:</th><td><?=$select_loc; ?></td></tr> <tr><th>Время:</th><td><select name=«post_date» size=«1»><option value=«»></option><option value=«<? echo date(‘Y-m-d’, strtotime («-1 day»));  ?>«>за сутки</option><option value=«<? echo date(‘Y-m-d’, strtotime («-3 day»));  ?>«>за 3 дня</option><option value=«<? echo date(‘Y-m-d’, strtotime («-7 day»));  ?>«>за 7 дней</option><option value=«<? echo date(‘Y-m-d’, strtotime («-1 month»));  ?>«>за текущий месяц</option></select></td></tr> <tr><th>Цена у.е.:</th><td> от<input name=«ads_price[between][0]» size=«4» />до<input name=«ads_price[between][1]» size=«4» /><select style=«width: 3em» name=«ads_order[ads_price]» size=«1»><option value=«»></option><option value=«asc»>возр.</option><option value=«desc»>убыв.</option></select></td></tr> </table> <input type=«submit»  value=«Поиск» /></form><?  $se_form = ob_get_contents();ob_end_clean();$ppb = new HTML_FormParser(); $st = $ppb->process($se_form);$st = preg_replace(‘~<div id=»ads_copyright_div»>.*</div>~siU’, », $st);echo $st;?>

скачать файл ads_searchform.zip

Немного поясню сам код:
строки 2-13 это подключается библиотека авто заполнения полей – если мы установили значение какого то поля и нажали на кнопку отправить наш выбор сохранится

16-29 Здесь мы получаем html код выпадающих списков select. $select_rub – список выбора основных категорий обявлений, $select_loc список выбора рубрик городов.
Далее начинается непосредственно html код самой формы.
Строка 46-55 вставляем выпадающий список для выбора времени публикации объявлений за одни сутки, за 3 суток, 7 и за месяц.
57-67 элемент выбора цены ads_price, пример как можно работать с мета полями .

Основная статья по механизму поиска Поиск по произвольным полям.