WordPress. Создание плагина. Часть 1 из 2
22.05.2019
Теги: CMS • Web-разработка • WordPress • Плагин • Удалить
В первую очередь создаем отдельную поддиректорию внутри wp-content/plugins
, в которой будут все файлы плагина. Имя главного файла плагина должно совпадать с названием директории плагина. После создания главного файла, в него нужно добавить комментарий, чтобы WordPress распознал новый плагин.
<?php /* Plugin Name: Hello, world! Plugin URI: https://tokmakov.msk.ru Description: Простой плагин, в целях изучения WordPress. Version: 1.0 Author: Евгений Токмаков Author URI: https://tokmakov.msk.ru */
После сохранения файла, плагин можно увидеть в панели управления:
Активация и деактивация плагина
В WordPress существуют три функции, которые позволяют зарегистрировать callback-функции, которые будут срабатывать в момент:
- активации плагина —
register_activation_hook()
- деактивации плагина —
register_deactivation_hook()
- удаления плагина —
register_uninstall_hook()
register_activation_hook(__FILE__, function() { // проверяем права пользователя if (!current_user_can('activate_plugins')) { return; } // проверям версию PHP, с которой плагин может работать if (version_compare(PHP_VERSION, '5.6.0', '<')) { die('Для работы плагина нужна версия PHP 5.6.0 или старше'); } // записываем в лог информацию об активации плагина $date = date('d.m.Y H:i:s'); $message = $date . ' Плагин «Hello, world!» активирован' . PHP_EOL; error_log( $message, 3, dirname(__FILE__) . '/error.log.txt' ); });
register_deactivation_hook(__FILE__, function() { // проверяем права пользователя if (!current_user_can('deactivate_plugins')) { return; } // записываем в лог информацию о деактивации плагина $date = date('d.m.Y H:i:s'); $message = $date . ' Плагин «Hello, world!» деактивирован' . PHP_EOL; error_log( $message, 3, dirname(__FILE__) . '/error.log.txt' ); });
Здесь мы используем анонимные функции, которые выполняются в момент активации и деактивации плагина. Но можно использовать методы класса в качестве callback-функции:
$plugin = new TokmakovHelloPlugin(); // при активация плагина register_activation_hook(__FILE__, [$plugin, 'activate']); // при деактивация плагина register_activation_hook(__FILE__, [$plugin, 'deactivate']); class TokmakovHelloPlugin { public function activate() { // проверяем права пользователя if (!current_user_can('activate_plugins')) { return; } // проверям версию PHP, с которой плагин может работать if (version_compare(PHP_VERSION, '5.6.0', '<')) { die('Для работы плагина нужна версия PHP 5.6.0 или старше'); } // записываем в лог информацию об активации плагина $date = date('d.m.Y H:i:s'); $message = $date . ' Плагин «Hello, world!» активирован' . PHP_EOL; error_log( $message, 3, dirname(__FILE__) . '/error.log.txt' ); } public function deactivate() { // проверяем права пользователя if (!current_user_can('deactivate_plugins')) { return; } // записываем в лог информацию о деактивации плагина $date = date('d.m.Y H:i:s'); $message = $date . ' Плагин «Hello, world!» деактивирован' . PHP_EOL; error_log( $message, 3, dirname(__FILE__) . '/error.log.txt' ); } }
Удаление плагина
Функция register_uninstall_hook()
регистрирует функцию, которая вызывается в момент удаления плагина, чтобы почистить все следы плагина в системе. Она должна вызываться из кода главного файла плагина, а не из функции или метода класса. В противном случае хук удаления может не сработать. А весь код удаления плагина должен находиться внутри функции или метода класса и подключаться через хуки.
register_uninstall_hook(__FILE__, function() { // проверяем права пользователя if (!current_user_can('delete_plugins')) { return; } // отправляем письмо администратору об удалении плагина wp_mail( get_bloginfo('admin_email'), 'Плагин удален', 'Плагин «Hello, world!» удален' ); });
register_uninstall_hook(__FILE__, ['TokmakovHelloPlugin', 'uninstall']); class TokmakovHelloPlugin { public static function uninstall() { // проверяем права пользователя if (!current_user_can('delete_plugins')) { return; } // отправляем письмо администратору об удалении плагина wp_mail( get_bloginfo('admin_email'), 'Плагин удален', 'Плагин «Hello, world!» удален' ); } }
Для удаления плагина можно также использовать файл uninstall.php
в корневой директории плагина:
<?php if (!defined('WP_UNINSTALL_PLUGIN')) { exit; } // проверка пройдена успешно — можно удалять опции, таблицы БД и т.д. delete_option('some_option');
Для удаления плагина рекомендуется использовать именно файл uninstall.php
, а не функцию register_uninstall_hook()
. Если существует файл uninstall.php
, то функция register_uninstall_hook()
игнорируется и все управление по удалению плагина передается uninstall.php
.
- WordPress. Количество просмотров записи
- WordPress. Фильтр записей по произвольным полям. Часть 3 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 2 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 1 из 3
- WordPress. Добавляем мета-теги. Часть 3 из 3
- WordPress. Метабоксы. Часть 2 из 2
- WordPress. Произвольные типы записей
Поиск: CMS • Web-разработка • WordPress • Плагин • Удалить • Plugin • Активация • Деактивация