WordPress. Создание плагина. Часть 2 из 2
23.05.2019
Теги: CMS • Web-разработка • WordPress • Плагин
Итак, наш первый плагин уже работает, его можно активировать и деактивировать. При активации и деактивации выполняются некоторые действия, и плагин можно удалить. Давайте теперь с помощью хука вмешаемся в ход выполнения WordPress и выполним какое-нибудь действие — чтобы увидеть результат работы плагина.
Например, преобразуем первый символ каждого слова заголовка в верхний регистр:
<?php /* Plugin Name: Hello, world! Plugin URI: https://tokmakov.msk.ru Description: Простой плагин, в целях изучения WordPress. Version: 1.0 Author: Евгений Токмаков Author URI: https://tokmakov.msk.ru */ // при активация плагина register_activation_hook(__FILE__, ['TokmakovHelloPlugin', 'activate']); // при деактивация плагина register_activation_hook(__FILE__, ['TokmakovHelloPlugin', 'deactivate']); // при удалении плагина register_uninstall_hook(__FILE__, ['TokmakovHelloPlugin', 'uninstall']); // первый символ каждого слова заголовка переводим в верхний регистр add_filter('the_title', ['TokmakovHelloPlugin', 'title']); class TokmakovHelloPlugin { public static function title($title) { return mb_convert_case($title, MB_CASE_TITLE); } public static function activate() { // проверяем права пользователя if (!current_user_can('activate_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' ); } public static 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' ); } public static function uninstall() { // проверяем права пользователя if (!current_user_can('delete_plugins')) { return; } // отправляем письмо администратору об удалении плагина wp_mail( get_bloginfo('admin_email'), 'Плагин удален', 'Плагин «Hello, world!» удален' ); } }
Добавим еще немного функционала — просматривать записи блога могут только авторизованные пользователи, остальные получат сообщение:
<p>Для просмотра контента необходимо <a href="...">авторизоваться</a> на сайте.</p>
<?php /* Plugin Name: Hello, world! Plugin URI: https://tokmakov.msk.ru Description: Простой плагин, в целях изучения WordPress. Version: 1.0 Author: Евгений Токмаков Author URI: https://tokmakov.msk.ru */ // при активация плагина register_activation_hook(__FILE__, ['TokmakovHelloPlugin', 'activate']); // при деактивация плагина register_activation_hook(__FILE__, ['TokmakovHelloPlugin', 'deactivate']); // при удалении плагина register_uninstall_hook(__FILE__, ['TokmakovHelloPlugin', 'uninstall']); // первый символ каждого слова заголовка переводим в верхний регистр add_filter('the_title', ['TokmakovHelloPlugin', 'title']); // для просмотра контента необходимо авторизоваться на сайте add_filter('the_content', ['TokmakovHelloPlugin', 'content']); class TokmakovHelloPlugin { public static function title($title) { return mb_convert_case($title, MB_CASE_TITLE); } public static function content($content) { if (is_user_logged_in()) { return $content; } if (is_page()) { return $content; } $auth = '<a href="'.wp_login_url(get_permalink()).'">авторизоваться</a>'; $content = '<p>Для просмотра контента необходимо ' . $auth . ' на сайте.</p>'; return $content; } public static function activate() { // проверяем права пользователя if (!current_user_can('activate_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' ); } public static 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' ); } public static function uninstall() { // проверяем права пользователя if (!current_user_can('delete_plugins')) { return; } // отправляем письмо администратору об удалении плагина wp_mail( get_bloginfo('admin_email'), 'Плагин удален', 'Плагин «Hello, world!» удален' ); } }
В панели управления WordPress можно настроить отправку писем при добавлении нового комментария. Давайте реализуем аналогичный функционал:
<?php /* Plugin Name: Hello, world! Plugin URI: https://tokmakov.msk.ru Description: Простой плагин, в целях изучения WordPress. Version: 1.0 Author: Евгений Токмаков Author URI: https://tokmakov.msk.ru */ // при активация плагина register_activation_hook(__FILE__, ['TokmakovHelloPlugin', 'activate']); // при деактивация плагина register_activation_hook(__FILE__, ['TokmakovHelloPlugin', 'deactivate']); // при удалении плагина register_uninstall_hook(__FILE__, ['TokmakovHelloPlugin', 'uninstall']); // первый символ каждого слова заголовка переводим в верхний регистр add_filter('the_title', ['TokmakovHelloPlugin', 'title']); // для просмотра контента необходимо авторизоваться на сайте add_filter('the_content', ['TokmakovHelloPlugin', 'content']); // отправляем письмо администратору при добавлении нового комментария add_action('comment_post', ['TokmakovHelloPlugin', 'comment']); class TokmakovHelloPlugin { public static function title($title) { return mb_convert_case($title, MB_CASE_TITLE); } public static function content($content) { if (is_user_logged_in()) { return $content; } if (is_page()) { return $content; } $auth = '<a href="'.wp_login_url(get_permalink()).'">авторизоваться</a>'; $content = '<p>Для просмотра контента необходимо ' . $auth . ' на сайте.</p>'; return $content; } public static function comment() { wp_mail( get_bloginfo('admin_email'), 'Добавлен комментарий', 'Добавлен новый комментарий к записи' ); } public static function activate() { // проверяем права пользователя if (!current_user_can('activate_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' ); } public static 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' ); } public static function uninstall() { // проверяем права пользователя if (!current_user_can('delete_plugins')) { return; } // отправляем письмо администратору об удалении плагина wp_mail( get_bloginfo('admin_email'), 'Плагин удален', 'Плагин «Hello, world!» удален' ); } }
- WordPress. Фильтр записей по произвольным полям. Часть 3 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 2 из 3
- WordPress. Фильтр записей по произвольным полям. Часть 1 из 3
- WordPress. Добавляем мета-теги. Часть 3 из 3
- WordPress. Метабоксы. Часть 2 из 2
- WordPress. Произвольные типы записей
- WordPress. Пользовательские таксономии
Поиск: CMS • Web-разработка • WordPress • Плагин