Написание плагина для WordPress

wordpress

Пару дней назад возникла необходимость написания собственного плагина для WordPress для одного из проектов. Был поднят на уши интернет и найдены некоторые хорошие публикации по теме.Затем началась работа.

Итак, пишем плагин.

Я бы разделил весь этот творческий процесс на несколько этапов:

  1. создание файла плагина  со скелетом;
  2. интерфейсная часть плагина в админке;
  3. программирование требуемого функционала плагина.

1. Создание файла плагина  со скелетом.

Здесь всё просто, можно подсмотреть в любом файле плагина, скопировать и переписать для своего случая.

[sourcecode language=»php»][/sourcecode]

2. Интерфейсная часть плагина в админке.

Под интерфейсной частью я подразумеваю наличие в админке WordPress управляющего меню плагина. Нам понадобятся две функции: функция создание меню add_object_page() и функция создания подменю add_submenu_page(). Синтаксис и все нюансы с ними вы можете нагуглить, или почитать в ссылках в конце статьи. Мне было необходимо создать 2 подменю для двух вариантов запросов в БД. Для этого необходимо, дальше в теле плагина под частью, что написана выше, описать функцию которая инициализируется при активации плагина, тем самым создавая управляющее меню плагина.

[sourcecode language=»php»]function userlist_init(){
$icon = »;
add_object_page(‘Клиенты’, ‘Клиенты’, -1, basename(__FILE__), », $icon);
add_submenu_page(basename(__FILE__), ‘Номера телефонов’, ‘Номера телефонов’, 10, ‘mobile’, ‘clients_mobile’);
add_submenu_page(basename(__FILE__), ‘Электронные адреса’, ‘Электронные адреса’, 10, ’emails’, ‘clients_email’);
}[/sourcecode]

Если в add_object_page не написать -1 (уровень доступа к пункту меню), то пункт «Клиенты» продублируется в общее меню плагина, что нам ненужно. clients_mobile и clients_email — функции, которые выполняются при выборе того или итого пункт меню. В конце плагина сразу можно приписать

[sourcecode language=»php»]add_action(‘admin_menu’,’userlist_init’);[/sourcecode]

— запуск функции userlist_init() при активации плагина.

3. Программирование требуемого функционала плагина.

Создав меню и проверив его активировав плагин, можно начинать работать с функционалом. Я обозначил выше две функции: clients_mobile и clients_email , они обе описываются в этом же файле плагина, только ниже чем userlist_init(). В принципе на этом этапе можно было бы и остановиться, так как функционал зависит от требуемых задач. Замечу, что для работы с БД WP сначала необходимо ознакомиться с объектом $wpdb.

Приведу простой пример использования $wpdb в рамках одной из вышеназванных функций. На гениальность не претендую.

[sourcecode language=»php»]function clients_email() {
require_once(‘/wp-includes/wp-db.php’);
global $wpdb;
/* пока не добавил ссылку на класс и глобально не объявил — ничего не хотело работать */
echo «

Электронная почта

«;
/* просто строка с надписью Электронная почта */
$sql = «SELECT user_email FROM wp_users»;
/* SQL-запрос в БД */
$arr = $wpdb->get_results($sql,»ARRAY_A»);
/* получание результата и дальнейший вывод, кстати методы получения могут быть разные, как и аргументы — читаем $wpdb */
for ($i=0;$i«.$arr[$i][‘user_email’].»

«;
}
}[/sourcecode]
Ну вот, как то так. Мой пробег по теме создания плагина для WordPress на этом закончен.

Ссылки

Function Reference/wpdb Class
http://codex.wordpress.org/Function_Reference/wpdb_Class

WordPress, объект $wpdb
http://alex-c.pp.ru/?p=118

Пишем плагин wordpress: основы
http://alex-c.pp.ru/?p=132

Напишем плагин для WordPress
http://www.dimio.org/napishem-plagin-dlya-wordpress-chast-1.html

Create a Custom WordPress Plugin From Scratch
http://net.tutsplus.com/tutorials/wordpress/creating-a-custom-wordpress-plugin-from-scratch/

Writing WP 2.7 Plugins and using add_object_page()
http://www.georgemandis.com/writing-wp-27-plugins-and-using-add_object_page/