Как я плагин для WordPress 3.3 делал — Импортер с Liveinternet (часть 2)

В процессе создания плагина я ставлю перед собой несколько целей:

  • Сделать импорт постов с . Это главное.
  • Изучить лучше , научиться писать плагины под этот движок.

При удачном стечении обстоятельств :) ко мне в руки попал li.ru импортер для старой версии WordPress до 3-й, который не работал в новой версии. Его я использую для своих целей. Приступим…

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

— переопределяет функцию движка на пользовательскую

— срабатывает при вызове базовой функции, т.е. дополняет ее.

В плагине у нас будет класс, который будет наследоваться (расширять) класс WP_Importer.

Соответственно класс имеет конструктор function liru_ (), его я и буду использовать для перехвата.

Писать можно в начале, или в конце файла, но не в теле класса. Таким образом мы заставляем WordPress выполнить нашу функцию вместе с стандартным вызовом init. Конструктор будет пустой.

Далее нам нужно позаботиться о возможности установки нашего плагина в систему и его активации в разделе плагинов в админке. Стоит обратить внимание, что наш импортер не будет иметь настроек, но если в будущем они будут нужны, то добавить или удалить настройки можно такими функциями:

Тут set_funct функция для установки настроек плагина, unset_funct для удаления, при удалении плагина. Написать их нужно в файле плагина. Так же нужно знать, что опции хранятся в специльной таблице WordPress.

*prefix_options – таблица mySQL с настройкам wordpress. prefix задаётся в файле wp-config при установке wordpress и по умолчанию имеет занчение wp (т. е. таблица называется wp_options).

Дальнейшую работу с опциями можно посмотреть в документации. Мне это не пригодилось.
Установки Импортера выполняется проще.

Создаем экземпляр нашего класса импорта, вызываем стандартную функцию register_importer где указывается название, описание (для раздела импорта) и главный параметр тут array().

Рассмотрим методы класса.
function dispatch() используется для проверки шагов выполнения импорта и прерывания выполнения в случае ошибки. У нас будет 2 шага. На первом будем выводить приветствие, на втором проверять событие ‘import-upload’. Т.е. если файл для импорта загружен, тогда вызываем функцию импорта.

function import() — главная функция, которая ведет процесс импорта. Как и dispatch() эти функции переопределяют и расширяют стандартный класс WP_Importer.

Т.к. основной код я брал не свой, я приведу его в конце полностью с комментариями.

function greet() будет выводить начальное приветствие и загружать форму, в которой мы будем выбирать файлы для импорта. Выполняется на первом шаге.

function header() и function footer() будут вызываться в dispatch() на определенных шагах выполнения. Они выводят только html разметку.

Теперь в начале файла выполним несколько проверок:

Если выполнение происходит не из меню импорта, то ничего выполнять не будем.

Загружаем API импорта. Раньше было достаточно положить файл импорта в папку import в структуре сайта и новый импортер автоматически подхватывался. Теперь же по системе плагинов все указываем руками.
Нужно убедиться, что класс, от которого мы будем наследовать импортер существует.

Если все еще не подключен, то подключаем его и наконец-то объявляем наш класс импорта.

В следующем посте приведу полный код с комментариями, т.к. он довольно таки большой.

Полезные ссылки:

Написание плагина
Plugin_API

Ссылка для скачивания liru-importer c моего блога
Мой плагин в репозиториях WordPress