Пару дней назад возникла необходимость написания собственного плагина для WordPress для одного из проектов. Был поднят на уши интернет и найдены некоторые хорошие публикации по теме.Затем началась работа.
Итак, пишем плагин.
Я бы разделил весь этот творческий процесс на несколько этапов:
- создание файла плагина со скелетом;
- интерфейсная часть плагина в админке;
- программирование требуемого функционала плагина.
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
«;
}
}[/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/