Ads WordPress добавление\отображение произвольных полей

! Эта статья устарела, смотрите новую версю плагина Ads WordPress 3.x
План такой:

  1. Добавление полей в форму ввода
  2. Отображение данных
  3. Проверка данных

Форма ввода

Откройте файл в папке плагина form_default_template.php – это форма ввода используется по умолчанию.
Обязательный элемент любой формы – массив $_SESSION['ads_filds_form']
Это защита от хакеров, чтобы они не могли подсунуть через форму ввода произвольную переменную. Как видите здесь идет список имен элементов формы.
Например мы решили добавить поле адреса, нет давайте лучше 2 поля улица:ads_street и номер дома:ads_home, причем улица обязательный параметр, а номер дома нет.

Внимание название произвольных полей должно начинаться с префикса ads_ !

Добавляем поля в массив ads_filds_form:

	$_SESSION['ads_filds_form'] = array('ads_location','ads_url','post_title','post_content',
'comment_status','tags_input','captcha','ROTATE_LEFT','ROTATE_RIGHT','DELETE_IMG',
'UPLOAD_IMG','CHECK_FORM','RESET', 'ads_phone','ads_email','ads_lifetime',
'ads_street', 'ads_home'  );

Далее идет обычный html текст ну что-то вроде

где эта улица*:

где этот дом:

Добавляем этот текст в тег form нашей формы.

В плагине используется библиотека Дмитрия Котерова . Поэтому не надо устанавливать никаких значений value в input, иначе значение полей будет все время сбрасываться если пользователь ввел что-то неправильно.

C формой вроде бы разобрались, переходим к отображению полей.

Вывод данных

Открываем шаблон post_default_template.php (он также используется по умолчанию) и для начала рассмотрим его повнимательнее.
Шаблон состоит из 2 частей :


//  мы находимся на странице записи полный вид объявления

//  мы находимся в рубрике короткий вид объявления

Ну, думаю уже из комментариев понятно, что первая часть будет отображаться когда мы находимся непосредственно на странице объявления – полный вариант, вторая часть будет работать когда мы просматриваем рубрику (список) объявлений то есть короткий вариант. Дальше уже от вас зависит где и как вы будите выводить новые поля. Но логично было бы выводить улицу и номер дома в полном варианте.
Все то, что мы добавили в форме будет автоматически доступно в шаблоне поста. Добавляем вывод:

Улица :  

Напомню, все выше сказанное будет работать если вы включили опцию Применять шаблоны постов в админке плагина

Проверка данных

Теперь переходим к самому сложному, нам надо организовать проверку данных, в данном случае нам надо проверить ввел ли пользователь улицу или нет.
Для этого в файле ads_config.php надо подключить пользовательский фильтр ads_check_fields, вернее он там уже подключен и нам надо только изменить функцию ads_filter:

function ads_filter($post){
    //  например исправляем url адресс если пользователь ввел адерс без http://
    // добавляем его
     if($post['ads_url'] == 'http://') $post['ads_url'] = '';
     elseif($post['ads_url'] AND !preg_match('~^http://~',$post['ads_url'])){
         $post['ads_url'] = 'http://'.$post['ads_url'];
     }
     //  проверка улицы
     if( empty($post['ads_street'] ){
         $post['error'] = 'ВЫ забыли ввести улицу!';
     }
    return $post;
}
add_filter('ads_check_fields', 'ads_filter');

Сама проверка if( empty($post['ads_street'] ) если в ads_street пусто генерируем ошибку $post['error'] = ‘ВЫ забыли ввести улицу!’; пока фильтр будет возвращать какую-либо строку в $post['error'] форма будет считаться не заполненной. Если у вас много полей и много ошибок то просто присоединяйте все сообщения об ошибках в $post['error'] .= “Еще одна ошибка!”;

Для проверки ввода файлов, их типа, размера и т.д используйте фильтр ads_check_files. Вот как это может выглядеть:

function ads_filter_files($files){
   if( $files[0] AND  !preg_match('~^image/~',$files[0]['type']) ){
        $files['error'] .= 'Первая загрузка только картинка JPG, GIF, PNG
'; $postID = $files[0]['id']; $res = wp_delete_attachment($postID); $files[0] = 0; } if(!preg_match('~rar|zip|force-download~',$files[1]['type']) ){ $files['error'] .= 'Вторая загрузка только архив RAR или ZIP
'; $postID = $files[1]['id']; $res = wp_delete_attachment($postID); $files[1] = 0; } return $files; } add_filter('ads_check_files', 'ads_filter_files');

Очень показательный пример первое условие проверяет наличие файла № 1 и его mime type – это должно быть изображение, если тип файла не соответствует он тут же удаляется $res = wp_delete_attachment($postID);. Аналогично проверяется тип второго файла, но это уже должен быть архив.

Ну и напоследок, чтобы научить WordPress понимать новые типы файлов надо использовать фильтр upload_mimes. Так например широко известный формат rar WordPress не поддерживается, показываю как его добавить:

// добавляем новый тип медиа объектов  RAR архивы
function additional_types2($mimes) {	$mimes['rar'] = 'application/x-rar-compressed';	return $mimes;}
add_filter('upload_mimes', 'additional_types2');
Рубрика:  апреля 29, 2009.
/ » » »


Похожие записи:

ili.com.ua/news/za-prazdnik-ukraintsyi-namusorili-menshe-chem-fanyi-evro-2012.html
ili.com.ua/news/ukraina-predsedatelstvuet-v-obse.html
ili.com.ua/news/gai-snova-proveryaet-voditeley.html
ili.com.ua/news/zhurnalistyi-ustanovili-u-zdaniya-mvd-ukrainyi-palatku-2.html

Новости

  • В Украине предложили возобновить призыв
  • Визовый режим между Украиной и Россией
  • Эффективная система безопасности
  • Самоотверженный поступок жительниц села Феськи
  • Состоится ли встреча замглав МИД СНГ?
  • Тягнибок разрешил выступать в Верховной Раде на русском
  • Ефремов расскажет, кто виноват
  • Комментарии


    Расширеный поиск +

    Другие статьи

    Объявления

    Мои проекты на WordPress

    , - специализированная доска объявлений по недвижимости на стоимость сборки $300 с установкой.
    городская доска объявлений, основные разделы: недвижимость, транспорт, услуги, работа, куплю-продам. Стоимость сборки $300 с установкой.
    - разработка, поддержка.

    Счетчики

    our blog