Доброго времени суток! Хоть опыта создания плагинов у меня очень небольшой. Но в этой статье, я хочу привести пример разработки простого плагина. В задачи которого будет входить:
- Сохранение информации в БД через панель администратора.
- Вывод этой информации во фронт энде, для гостя.
И первое что нам нужно сделать — это в каталоге «/wp-content/plugins/» создать папку для нашего плагина. Назовем ее к примеру «my-plugin».
Второе — поместить в эту папку php файл отвечающий за работу плагина. Я, обычно называю такой файл идентично каталогу. В нашем случае «my-plugin.php».
Третье. Чтобы WP понял что это плаги, нам нужно в самом верху файла «my-plugin.php» разместить специальную информацию. Прочтя которую, WordPress определить название плагина, его описание, автора и ссылки на сайт и его страничку. В примере можно использовать следующий код-комментарий:
/* Plugin Name: My Plugin Plugin URI: http://example.com Description: My Plugin Description Version: 1.0 Author: My Name Author URI: http://example.com License: GPL2 */
где:
Plugin Name — название плагина
Plugin URI — страничка плагина
Description — его описание
Version — версия
Author — авто плагина
Author URI — адрес сайта автора
License — вид лицензии
Ниже этого комментария, можно привести лицензионную информацию по плагину.
Back-end сайта (панель администратора)
Чтобы перейти на страничку плагина, где будет размещаться форма сохранения данных. Сперва, нам нужно добавить в меню админки ссылку. Вариантов, где разместить ссылку несколько — в каком либо из существующих меню или отдельной ссылкой. Так же можно создать многоуровневое меню (как реализовано меню «Настройки», «Записи» и т.п.).
Используя хук «admin_menu», мы можем создать меню. К примеру так:
/* Добавляем в меню админки пункты меню */ function myp_admin_action() { /* Добавляем подпункт меню в раздел "Настройки" */ add_options_page('Мой плагин (заголовок)', 'Мой плагин (пункт меню)', 'manage_options', __FILE__, 'myp_admin_page_options'); } /* Регистрируем ф-ю для формирования меню */ add_action('admin_menu', 'myp_admin_action');
Функция «add_options_page» имеет 5ть параметров:
Первый — текст, который будет использован в title страницы нашего плагина.
Второй — текст, который будет использован в качестве называния нашего пункта меню.
Третий — название права доступа для пользователя, чтобы ему был доступен данный пункт меню (полный список можно найти в кодексе).
Четвертый — идентификатор меню (нужно вписывать уникальную строку, пробелы не допускаются).
Пятый - название функции, которая отвечает за код страницы этого пункта меню.
В нашем примере, за отображение формы плагина,отвечает ф-я «myp_admin_page_options». Ее содержимое следующее:
function myp_admin_page_options() { ?> <div class="wrap"> <h2><?php echo __('Настройки плагина "My Plugin"', 'myp_domain')?></h2> <form method="post" action="options.php"> <?php wp_nonce_field('update-options'); ?> <input type="hidden" name="action" value="update" /> <input type="hidden" name="page_options" value="myp_param1,myp_param2" /> <p> <?php echo __('Опция 1:', 'myp_domain'); ?> <input type="text" name="myp_param1" value="<?php echo get_option('myp_param1'); ?>" size="20"> </p> <p> <?php echo __('Опция 2:', 'myp_domain'); ?> <input type="text" name="myp_param2" value="<?php echo get_option('myp_param2'); ?>" size="20"> </p> <?php submit_button(); ?> </form> </div> <?php }
Выше указанный код, сгенерирует следующую форму:
Давайте остановимся подробнее на некоторых важных деталях.
Код ниже, выводит проверочное (защитное, одноразовое) скрытое поле для формы. Без этого форма не сработает и данные сохранены в базу не будут.
wp_nonce_field('update-options');
А благодаря этому коду, выполняется сохранение данных в БД:
<input type="hidden" name="action" value="update" />
Хранит список переменных, перечисленных через запятую, которые будут сохранены в БД:
<input type="hidden" name="page_options" value="myp_param1,myp_param2" />
за это отвечает скрытая переменная «page_options».
А код:
<p> <?php echo __('Опция 1:', 'myp_domain'); ?> <input type="text" name="myp_param1" value="<?php echo get_option('myp_param1'); ?>" size="20"> </p> <p> <?php echo __('Опция 2:', 'myp_domain'); ?> <input type="text" name="myp_param2" value="<?php echo get_option('myp_param2'); ?>" size="20"> </p>
отвечает за отображение текстовых полей и вывод в них сохраненных значений.
За получение данных настроек из БД и отвечает код:
get_option('myp_param1');
Функция «submit_button();» обеспечивает отображение клавиши SUBMIT нашей формы.
И самое последнее что нам нужно, и о чем иногда забывают разработчики — это удаление данных из БД наших настроек при удалении самого плагина. Но здесь вопрос спорный. А что если вы решите установить плагин обратно, и вам будут нужны старые настройки? Хорошее оправдание, не правда ли?
Ниже, приведен пример на основе деактивации плагина.:
register_deactivation_hook(__FILE__, 'myp_deactivate'); function myp_deactivate() { delete_option('myp_param1'); delete_option('myp_param2'); }
Для удаления используйте функцию «register_uninstall_hook». Я удаление не делаю из-за того, что на моем компьютере не настроен FTP.
Front-end сайта (то что видит гость)
Здесь все просто. Чтобы отобразить данные которые мы сохранили в БД, используйте функцию «get_option();» а в качестве параметра — название вашей опции. Т.е.:
<?php echo get_option('myp_param1'); ?> /*или*/ <?php echo get_option('myp_param2'); ?>
Выше указанный код, можно вставить в любую из страниц вашей темы, после чего он будет отображен.
На этом все.