Разработка плагина WordPress при помощи Eclipse PDT

Использование инструментов Eclipse для расширения WordPress

WordPress – это издательская Web-платформа, написанная на РНР и использующая MySQL для хранения данных.

Натан А. Гуд, инженер по программному обеспечению, консультант

Натан Гуд (Nathan A. Good) живет в регионе Twin Cities (штат Миннесота, США). Н. Гуд профессионально занимается разработкой программного обеспечения, архитектурой программного обеспечения и системным администрированием. Когда Н. Гуд не занят написанием программного обеспечения, он с удовольствием занимается построением ПК и серверов, изучением и освоением новых технологий, а также убеждением своих коллег в необходимости перехода на программное обеспечение с открытым кодом. Натан Гуд лично и в соавторстве написал множество книг и статей, в том числе: Professional Red Hat Enterprise Linux 3, Regular Expression Recipes: A Problem-Solution Approach, Regular Expression Recipes for Windows Developers: A Problem-Solution Approach, PHP 5 Recipes: A Problem-Solution Approach. Самая новейшая из его работ: Foundations of PEAR: Rapid PHP Development.



14.04.2010

Версия Eclipse PDT V2.0 вышла недавно. Она содержит многие новые удобные функции, включая возможность добавлять путь сборки, применять механизм открытых типов и пользоваться усовершенствованной системой помощи по программированию.

Эта статья демонстрирует, как загрузить и установить WordPress и как использовать Eclipse PDT для создания плагина. В ней показано также, как экспортировать плагин из Eclipse с целью его распространения.

Чтобы получить максимальную пользу от этой статьи, вам понадобятся следующие инструменты:

  • PHP V4.3 или более поздняя версия
  • MySQL V4.0 или более поздняя версия
  • Eclipse V3.4 с PDT

Обзор WordPress

WordPress — это издательская платформа, написанная на РНР, которая позволяет быстро и легко публиковать материалы в Web. Она легко наращивается путем добавления плагинов, которые могут обеспечивать почти любую функциональность. С 2005 года были загружены миллионы копий WordPress, с которым работают как крупные компании, так и индивидуальные пользователи.

WordPress прост в установке и конфигурировании и предъявляет мало требований: нужны только РНР и MySQL. Чтобы установить WordPress, достаточно загрузить с Web-сайта файл ZIP (см Ресурсы) и распаковать архив в каталог, доступный для Web-сервера. В этой статье я использую такую конфигурацию Web-сервера, чтобы на нем можно было публиковать каталог пользователя (такой как модуль userdir в Apache). При желании этот каталог можно переименовать: я изменил свой с wordpress на blog.

Распаковав файлы и переименовав каталог, следуйте инструкциям "Famous 5-Minute Install" (см. Ресурсы). Если ваш поставщик интернет-услуг (ISP) отвечает требованиям WordPress, вы можете разработать весь каталог своего сайта локально и выложить его на сайт посредством FTP.


Расширение WordPress

Многие используют WordPress для блоггинга, хотя с его помощью легко и удобно публиковать любой контент. Я работал с сайтами, посвященными продуктам, с форумами, формами обратной связи и Adobe® Flash®-анимацией на главной странице, где WordPress используется в качестве основного механизма информационного наполнения.

Для WordPress написано множество плагинов (см. Ресурсы). Они обеспечивают самые разные возможности от добавления специальных полей, собирающих дополнительную информацию о зарегистрированных пользователях сайта, до облака тегов, фильтров спама и контактных плагинов, генерирующих ссылки типа "поделись этим", ведущие на популярные сайты типа Facebook, MySpace, del.icio.us и Technorati.

Но несмотря на наличие всех этих плагинов бывают случаи, когда WordPress нужно дополнить своим собственным плагином. Остальная часть этой статьи показывает, как использовать Eclipse и PDT для настройки среды разработки, в которой можно создавать и тестировать плагины для WordPress.


Настройка рабочего пространства

Перед тем как настраивать свое рабочее пространство, установите и запустите WordPress. Вам понадобится доступ к каталогу WordPress для чтения и записи. Лучше всего, когда каталоги пользователя сконфигурированы на Web-сервере, размещенном на вашей машине, чтобы файлы можно было сразу помещать в свой собственный домашний каталог. Но и общий каталог тоже работает, если вы можете читать и записывать в него.

Сначала создайте подкаталог внутри каталога WordPress_home/wp-content/plugins (где WordPress_home— это полный путь к каталогу, в который вы распаковали WordPress) — например, WordPress home/wp-content/plugins/myplugin. Уже через несколько мгновений этот каталог станет домом для вашего нового плагина WordPress.

Если WordPress запущен и может считывать и записывать данные в только что созданный каталог плагина, вы готовы к созданию нового проекта своего плагина для WordPress:

  1. Выберите File > Project, затем PHP Project из списка Мастеров (Wizards), как показано на рисунке 1.
    Рисунок 1. Создание нового проекта PHP
    Создание нового проекта PHP
  2. Нажмите Next.
  3. В окне проекта New PHP Project наберите имя своего плагина в поле Project name.
  4. В Contents выберите Create project from existing source (создать проект из существующего исходника). Затем укажите или введите имя только что созданного каталога (например, у меня это каталог /Users/ngood/Sites/blog/wp-content/plugins/myplugin) в поле Directory, как показано на рисунке 2.
    Рисунок 2. Определение местонахождения проекта
    Определение местонахождения проекта
  5. Нажмите Finish после ввода информации о каталоге, оставив остальные значения параметров по умолчанию.

После создания проекта листинг вашего каталога WordPress_home/wp-content/plugins/myplugin будет выглядеть, как в листинге 1.

Листинг 1. Содержание нового каталога myplugin
drwxr-xr-x  7 user  user    238 Feb  3 11:02 .
drwxr-xr-x@ 5 user  user    170 Feb  3 08:39 ..
-rw-r--r--  1 user  user    259 Feb  3 11:10 .buildpath
-rw-r--r--  1 user  user  30244 Feb  3 11:02 .pmd
-rw-r--r--  1 user  user    496 Feb  3 08:39 .project
drwxr-xr-x  3 user  user    102 Feb  3 08:39 .settings
-rw-r--r--  1 user  user    795 Feb  3 11:13 myplugin.php

Работа в групповой среде

Если вы работаете в групповой среде и публикуете свой код, инструменты Eclipse позаботятся о том, чтобы файлы попадали в репозиторий контроля исходного кода из нужного каталога. Однако обратите внимание на каталог, в который файлы из общей групповой среды импортируются в ваше рабочее пространство. Когда файлы импортируются из репозитория исходного кода в ваше рабочее пространство, можно определить, где именно они должны сохраняться (рисунок 3). За более подробными сведениями об использовании Eclipse с репозиторием исходного кода обращайтесь к Ресурсам.

Рисунок 3. Плагин на панели администратора WordPress
Плагин на панели администратора WordPress

Добавление WordPress к пути сборки

Проект PDT обеспечивает возможность добавлять папки к пути сборки, что позволяет инструментам автопродолжения кода работать с WordPress. Чтобы видеть функции add_filter и add_action в автопродолжении кода, можно изменить путь сборки, добавив каталог WordPress wp-includes.

Чтобы добавить в свой путь сборки каталог WordPress wp-includes, выберите Project > Properties при выделенном проекте PHP. На вкладке Libraries нажмите Add External Source Folder, затем найдите каталог wp-includes, расположенный там же, где установлен WordPress. Нажмите OK. Теперь можно набрать add_ в редакторе РНР, инициировать автопродолжение кода, и вы увидите список, содержащий add_action и add_filter.


Добавление первого файла плагина

Чтобы добавить свой первый файл плагина, выберите File > New > PHP File. Первый файл должен иметь то же имя, что и у каталога, в котором он находится. Например, если каталог плагина называется myplugin, имя файла должно быть myplugin.php. Из этого файла WordPress получает информацию о плагине и сведения для регистрации точек расширения.

Чтобы WordPress идентифицировал ваш плагин, нужно вставить в новый файл плагина блок комментариев. Если вы создаете много плагинов для WordPress, имеет смысл поместить этот блок в шаблоны кода РНР. Пример такого блока приведен в листинге 2.

Листинг 2. Блок комментариев для идентификации плагина
/*
Plugin Name: My Plugin
Plugin URI: http://www.example.com/myplugin
Description: This is a really great plugin that extends WordPress.
Version: 1.0.0
Author: Nathan A. Good
Author URI: http://www.nathanagood.com
*/

Пока ваш плагин ничего не делает. Но при наличии только блока комментариев он уже будет отображаться в административной области Plugins WordPress. Чтобы увидеть свой новый плагин, войдите в WordPress как администратор и нажмите Plugins. Новый плагин появится в списке Inactive Plugins.

Рисунок 4. Определение местонахождения исходного кода при импортировании из репозитория.
Определение местонахождения исходного кода при импортировании из репозитория

Добавление функциональности

В этой статье я добавляю две функции. Первая просто отображает заголовок записи блога прописными буквами. Это пример добавления фильтра. Вторая — это дополнительное поле в конце регистрационной формы пользователя. Это пример добавления действия.

Я намереваюсь написать примеры функционального кода, сохраняя его по возможности максимально коротким. Помните: при использовании PHP V5 или более поздней версии в своем коде можно применять идеи объектного программирования, чтобы облегчить его чтение сопровождение. За более подробной информацией о написании удобного в сопровождении кода РНР с использованием идей и моделей объектного программирования обращайтесь к Ресурсам.

Вывод заголовка прописными буквами

Листинг 3 иллюстрирует код фильтра заголовка. Для отображения заголовка записи блога прописными буквами он использует функцию РНР strtoupper().

Листинг 3. Отображение заголовка прописными буквами
/**
 * Отображение заголовка $title прописными буквами.
 */
function capitalizeTitle($title) {
    return strtoupper($title);
}

Когда функция написана, нужно вызвать add_filter для ее регистрации в WordPress в качестве специальной точки расширения фильтра. В разделе Ресурсы есть ссылка на полный список имеющихся фильтров. Ниже приведен пример добавления фильтра.

Листинг 4. Добавление фильтра при помощи add_filter
/* теперь добавляем фильтр */
add_filter('the_title', 'capitalizeTitle');

Добавление полей регистрации

Код для генерации новых специальных полей регистрации приведен в листинге 5. Я использовал расширение Firebug для просмотра стилей Cascading Style Sheet (CSS) существующих полей формы регистрации, чтобы мои специальные поля имели тот же самый класс стилей CSS.

Листинг 5. Новое поле специального действия
/**
* Добавление специального поля, которое запрашивает у пользователя его любимый цвет.
* @return void
 */
function drawCustomField() {
    echo '<p><label>Favorite Color:<br />';
    echo '<input autocomplete="off" class="input" name="fav_color" ';
    echo ' id="fav_color" size="25"';
    echo ' value="' . $_POST['fav_color'] . '" type="text" tabindex="32" />';
    echo '</label><br /></p>';
}

Чтобы добавить специальное действие, воспользуемся приведенным ниже кодом.

Листинг 6. Добавление действия при помощи add_action
/* теперь добавляем действие */
add_action('register_form', 'drawCustomField');

Это действие просто отображает поле в форме. Оно не сохраняет данные, когда пользователь вводит их в форму. Чтобы сохранить данные, воспользуйтесь действием profile_update. Ссылка на полный список имеющихся действий и их описание приведена в Ресурсах.


Тестирование плагина

Когда код помещен в проект, плагин можно протестировать. Перед этим нужно включить этот плагин в WordPress. Войдите в WordPress как администратор и нажмите Plugins. Найдите свой плагин и нажмите Activate.

Когда плагин активирован, перейдите на домашнюю страницу своего блога. Обратите внимание на то, что заголовок тестовой записи "Hello World!" теперь отображается прописными буквами. Если отключить ваш плагин, оно вернется к нормальному написанию. Ту же функциональность можно использовать и для других вещей, таких как превращение адресов URL, обнаруженных в заголовках, в гиперссылки. Благодаря возможности добавлять несколько фильтров с одним и тем же именем вместо одного фильтра, который выполняет разные функции, лучше создать много мелких специализированных функций и последовательно использовать их.

Чтобы проверить ту часть плагина, которая относится к полю регистрации, нужно зарегистрироваться в WordPress в качестве администратора и включить функцию, которая позволяет пользователям регистрироваться на странице Settings. Разрешив эту опцию и зайдя на страницу регистрации, вы увидите поле Favorite Color.


Другие точки расширения WordPress

Кроме добавления фильтров и действий, в WordPress можно изменять функции. Измененные вами функции определяются в файле pluggable.php в вашем домашнем каталоге WordPress. Один пример – это функция wp_mail, которая позволяет определять другую функцию для отправки электронной почты своим пользователям. Многие функции, допускающие изменение, относятся к авторизации пользователей, такие как регистрация, установка параметров cookies и оповещение о разных событиях. Возможность изменять функциональность авторизации позволяет создавать плагины, которые обеспечивают альтернативные формы авторизации и аутентификации в WordPress, такие как аутентификация по корпоративному реестру пользователей.


Экспорт плагинов

Написав и тщательно протестировав свой плагин, вы, наверное, захотите поделиться им с другими. Плагины WordPress упакованы так же, как и сам WordPress: большинство из них – это просто файл ZIP, который распаковывается и копируется в каталог плагинов WordPress.

Для экспорта файлов плагинов можно использовать Eclipse. Экспортируя проект в файл архива ZIP при помощи Eclipse, можно обойтись без отправки отдельных файлов проекта и общих каталогов и файлов группы (таких как каталоги .svn или Concurrent Version Systems (CVS)).

Чтобы экспортировать плагин в файл архива, выберите проект PHP, а затем File > Export. В окне Select выберите Archive File из списка мест назначения, затем нажмите Next.

Рисунок 5. Экспорт плагина WordPress
Экспорт плагина Exporting WordPress

В окне Archive file, показанном на рисунке 6, нажмите Deselect All, затем выберите файлы РНР, которые нужно включить в файл архива (такие как myplugin.php). Выбрав файлы PHP, выберите место назначения файла архива из списка To archive file и нажмите Finish, чтобы создать файл. Для сохранения соответствия лучше всего оставить имя файла ZIP таким же, как у каталога плагина и его главного файла.

Рисунок 6. Выбор файлов для экспорта
Выбор файлов для экспорта

Теперь, когда вы создали файл архива из Eclipse, его можно опубликовать на Web-сервере или скопировать в домен своего Интернет-провайдера для последующего использования.

Чтобы добавить информацию о своем плагине на официальный сайт WordPress, следуйте рекомендациям из раздела Ресурсы.


Заключение

WordPress – это стремительно набирающее популярность наращиваемое Web-приложение, которое позволяет легко публиковать информацию. WordPress можно расширять, добавляя функциональность без необходимости модификации самого кода.

Eclipse IDE с установленным PDT позволяет создавать плагины с применением инструментария РНР. Плагин можно тестировать и исполнять в WordPress до его готовности. Затем при помощи функции экспорта Eclipse можно упаковать плагин в файл архива, пригодный для распространения.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source
ArticleID=482504
ArticleTitle=Разработка плагина WordPress при помощи Eclipse PDT
publish-date=04142010