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

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

Префиксы ads_ и adp_

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

Форма ввода

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

$ads_config['ads_fields_form']	= array('post_title','post_content',
'comment_status','ar_tags','tags_input','ads_lifetime', 'ads_phone',
'ads_email','ads_location','ads_url');

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

$_SESSION['ads_fields_form'] = array('ads_my_var', 'adp_myvar');

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

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

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

	$_SESSION['ads_fields_form'] = array('ads_street', 'ads_home'  );

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

где эта улица*:
error_msg('ads_street')?>
где этот дом:

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

В плагине используется библиотека Дмитрия Котерова . Поэтому не надо устанавливать никаких значений 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']['ads_street'] = 'ВЫ забыли ввести улицу!';
     }
    return $post;
}
add_filter('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. Вот как это может выглядеть:

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');

Обсуждение на сайте:

Рубрика:  мая 17, 2010.
/ » » »


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

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

  1. admin says:

    можно прямо в форме прописать новые поля там же пример есть закоментированый

  2. says:

    не было ads_config.php вот и вся проблема…

    Ув. админ есть идея, я полагаю что многие владельцы сайтов использующие сей плагин согласятся с тем, что загружать файлы например фотографии, на свой хостинг не совсем удобно поскольку требует больше ресурсов и по мере возврастания популярности сайта нужно будет все больше и больше пространства на диске у хостера а это лишние деньги…
    Я предлагаю создать альтернативу и держать файлы ну например если рисунки то на хостинге картинок и т.п. вместо стандартного загрузчика — окно для ввода ссылки ведущей на картинку, видео или др файл…
    Конечно можно их выводить и при помощи произвольных полей, только проблема что такая возможность есть у зарегистрированных пользователей у остальных выводиться код (ссылки или видео), таким образом у меня выводилось видео с ютуб.

    Если я опоздал и это уже реализовано, то я и многие др. пользователи будут благодарны за информацию как перестроить загрузку файлов на не свой хостинг =))

  3. admin says:

    нету у меня такого, и даже еще не рассматривалась подобная идея,
    вряд ли до этого у меня дойдут руки когда-то.
    С другой стороны, никто не мешает покопаться в оф репозитории и поискать для загрузки файлов, картинок на какой нибудь плагин.
    Как я уже говорил в моем плагине почти все основные операции, в том числе и загрузка файлов, реализованы с помощью API wordpress и если что-то подобное есть то оно должно заработать.

  4. source says:

    Сперва хочу поблагодарить за плагин: Спасибо ОГРОМНОЕ! Круто, что такие люди как вы — существуют!

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

    Может непонятно выразился — уточню на примере форм.
    В формах вводим данные в post_title, post_content, ads_phone, хочу сделать, чтобы ads_phone тоже было в post_content (ну например с новой строки). Подскажите пожалуйста как и где это объединение сделать.

  5. says:

    Автор! Сколько будет стоить ваша помощь в настройке?
    Поюзал на локале, но очень многое непонятно — проде настроил, но хочется оптимизировать код — убрать таблицы, ускорить сам вп и так далее. Если можно на мыло.

  6. Stur says:

    ну так в статье все написано есть абзац Вывод данных и пример есть

  7. Stur says:

    изменяюсь, но пока я не могу

Новости

  • Новые рынки сбыта для промышленности
  • В Украине предлагают запретить аборты
  • Инновационный метод очистки воды
  • Присяга солдат на верность в Харькове
  • Новые патрульные авто появятся в Харькове
  • В Запорожской области прошел велодень
  • В Харькове переселенцам помогут найти работу
  • Статьи

  • Украинцы массово скупают недвижимость в Турции
  • Строительные сетки
  • Утилизация отходов с предприятий и заводов
  • Сохраним чистоту Планеты: правильный вывоз мусора
  • Современные стеклянные конструкции. Перегородки
  • Борьба с болезнями и вредителями растений
  • Мультимодальні міжнародні перевезення вантажів у Львові
  • Остальное

  • Строительные сетки
  • Строительные сетки
  • Киевская власть займется недостроями
  • Различия в керамической плитке, полученной методом бикоттуры и монокоттуры
  • Шнековый (винтовой) погрузчик
  • Как правильно арендовать квартиру?
  • Как выбрать квартиру посуточно в Киеве?
  • Комментарии

    Партнеры

    .
    Порнуха подробности .
    , ребята поимели.
    Аюрведа лечение поджелудочной железы по материалам .


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

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

    Объявления

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

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

    Счетчики

    our blog