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

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

Префиксы ads_ и adp_

Все произвольные поля должны начинаться с префикса ads_ или adp_ например: ads_FIO, ads_address, adp_price.
ads_ – поля с этим префиксом сохраняются используя механизм мета полей (custom fields)
adp_ – поля с этим префиксом будут сохранятся непосредственно в таблице wp_posts, поэтому предварительно надо добавить соответствующий столбец в эту таблицу, ну и естественно доступ к таким полям не требует никаких дополнительных затрат в отличии от мета полей. Доступ к ним можно получить через глобальную переменную $post->adp_price.

Форма ввода

Для того, чтобы плагин начал обрабатывать ваше новое поле его надо прописать в массив ads_filds_form сделать это можно в файле ads_config.php там уже есть готовый код:

Добавляем в это список свои поля, этот список действует глобально для всех форм.
И есть другой вариант добавить ваше поле непосредственно в шаблоне формы. Откройте файл в папке плагина /templates/form_default_template.php – это форма ввода используется по умолчанию для всех категорий.

Все это защита от хакеров, чтобы они не могли подсунуть через форму ввода произвольную переменную. Как видно здесь идет список имен элементов формы.
Например мы решили добавить 2 поля улица:ads_street и номер дома:ads_home, причем улица обязательный параметр, а номер дома нет.

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

В форме добавляем поля в массив ads_filds_form:

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

Добавляем этот текст в тег form нашей формы.
Конструкция <?$this->error_msg(‘ads_street’)?> будет выводить сообщение об ошибках соответствующее этому полю.

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

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

Вывод данных

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

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

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

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

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

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

Подключая фильтр непосредственно в форме обязательно используйте проверку if( !function_exists(‘ads_default_filter’) ){} как в примере.

Проверка файлов

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

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url=""> [php]…[/php] [html]…[/html] [css]…[/css] [text]…[/text] [code]…[/code]

  • sdfsdfsdf
  • sdfsdfsdfsdf
  • sdfsdfsdfs
  • sdfsdfsdf
  • sdfsdfsdfsdfs
  • sdfsdfsdfs
  • sdfsdfsdf
  • sdfsdfsdfsdfs