API плагина

Как вообще пользоваться API wordpress читаем вот тут http://codex.wordpress.org/Plugin_API
Здесь же я перечислю фильтры и события которые добавляет плагин Ads-WordPress.

Фильтр: ads_check_fields

Запускает пользовательские фильтры проверки данных (которые пользователь ввел в форме).
В фильтр передается 2 переменных: 1-массив полей формы, 2- ссылка на сам объект форма.
Стартует фильтр в ads_form_class.php строки 107, 132

Пример использования в файле ads_config.php

Проверяем: первое заголовок (post_title) не пустой и второе условие заголовок не больше 50 символов.

Как видно из примера текст ошибки мы записываем в специальный массив $_post[‘error’] пока в этом массиве будет хоть одна ошибка объявление не опубликуется!

Пример подключения в шаблоне формы например form_default_template.php:

Проверяем корректность e-mail.

Обратите внимание – функцию фильтра и само подключение нужно обернуть в условие if( !function_exists(‘ads_this_form_filter’) ){ }. Это связанно с тем, что шаблон формы подключается (include) дважды. Первый раз подключаются фильтры, сканируется названия полей из html текста, потом следует проверка данных (отрабатывает фильтр) Второй include непосредственно печать формы с ошибками или без.

Это очень удобно если у вас много разделов, у каждого раздела разные наборы данных и соответственно разные условия проверки. Для каждого раздела можно создать свой шаблон-форму и здесь же задать условия проверки. Таким образом первый фильтр в ads_config.php – будет работать для всех разделов, а второй фильтр только для разделов, которым назначен шаблон form_default_template.php.
Такой вот полиморфизм.

Фильтр: ads_load_post

расположен: ads_form_class.php строка 447

Когда пользователь загружает объявление для редактирования, весь массив $post предварительно пропускается через этот фильтр.
При переходе на новую версию плагина может возникнуть ошибка, когда редактор не хочет загружать старые объявления для редактирования. Это связанно с тем, что у них не выставлены 2 метаполя: ads_form_name = ярлык страницы с формой редактирования и ads_form_id – id страницы этой же формы, воспользуемся фильтром ads_load_post и при загрузке объявления будем устанавливать эти 2 поля на лету. И так, в ads_config.php добавляем:

‘dobavit-obyavlenie’ и 102 – естественно надо поменять на свои.

Фильтр: ads_check_files

расположен ads_form_class_lib.php строка 1289

Фильтр запускается перед загрузкой файлов в нем можно проверить тип загружаемого файла его размер и т.д.
Принимает 3 параметра: 1) системный массив $_FILES то что нам загружают; 2) &$attachments – массив уже загруженных файлов; 3) и на всякий случай ссылку на объект форму.
Пример: проверим загрузку четвертого файла, проверим чтобы он был текстовый, Word или Exel.
Рабочий пример: Дать объявление
в ads_config.php добавляем фильтр:

Нумерация файлов начинается с 0, четвертый файл будет иметь индекс 3!

Особенность проверки состоит в том, что у нас есть 2 массива $_FILES – в нем приходит только что отправленный файл и массив $attachments – в нем файл будет хранится постоянно после обработки WordPress. Сначала проверяем $attachments если там нет файла, проверяем $_FILES[3][‘size’] – если и тут пусто значит нам ничего не прислали, выводим ошибку. Если файл прислали проверяем его mime и соответствие расширения wp_check_filetype_and_ext.
Далее проверяем к какому группе типов относится файл wp_ext2type – описания этой функции в codex нет, к сожалению, но она находится в /wp-includes/functions.php по расширению возвращает группу файла (audio,video,archive … все типы кроме image почему-то).
Ошибки записываем в $_FILES[‘error’][номер файла]. Файл не загрузится пока для него есть ошибка.
Вдогонку к этому: wp_get_mime_types, wordpres фильтры mime_types, upload_mimes с помощью них можно расширить список типов файлов разрешенных к загрузке.

Событие: ads_after_saving

расположен ads_form_class.php строка 120, 148

Событие запускается ПОСЛЕсохранения объявления в БД. В этот момент уже точно есть ID объявления, установлены все meta поля и точно известно сколько файлов загрузил пользователь.
Аргументы: $post_id – id объявления, $_REQUEST – полный массив данных из формы, $this – ссылка на объект форму.
Пример: добавим ко всем объявления скрытое мета поле ads_count_file – счетчик кол-ва загруженных файлов, затем используя это мета поля мы можем легко найти объявления у которых есть хоть один файл(картинка).

Тут нам пригодится объект форма $form используя метод $form->get_attachments(); мы получаем массив уже загруженных файлов ну и далее добавляем мета поле ‘ads_count_file’, а если файлов нет тогда удаляем его.

События: ads_move_trash, ads_restore

расположение:
ads_move_trash в ads_filters.php строка 446, ads_form_class_lib.php строка 190
ads_restore в ads_form_class_lib.php строка 219

События запускаются когда объявление отправляется в корзину и восстанавливается соответственно.

Принимает один параметр – ID объявления.
Например при удалении в корзину меняем метаполе post_colorна grey, а при восстановлении удаляем поле.

Можно использовать для совместимости с различными темами wordpress, для установки специфических полей.

Событие: ads_cron

расположен в ads_filters.php:478

Прилепил на всякий случай, запускается после того как отрабатывает автоматическая сборка мусора по расписанию каждый день (cron).

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

Ваш 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