Доброго дня! Хоч мій досвід створення плагінів поки що невеликий, у цій статті я хочу навести приклад розробки простого плагіна, який виконує такі завдання:
- Зберігання інформації в БД через панель адміністратора.
- Виведення цієї інформації на фронтенді — для гостей.
Перше, що нам потрібно зробити — створити папку для нашого плагіна в каталозі /wp-content/plugins/. Назвемо її, наприклад, my-plugin.
Друге — додати в цю папку PHP-файл, який відповідатиме за роботу плагіна. Я зазвичай називаю файл так само, як і папку — у нашому випадку 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, ми додаємо меню наступним чином:
/* Додаємо в меню адмінки пункты меню */
функція myp_admin_action()
{
/* Додаємо підпункт меню в розділ "Налаштування" */
add_options_page('Мій плагін (заголовок)', 'Мій плагін (пункт меню)', 'manage_options', __FILE__, 'myp_admin_page_options');
}
/* Реєструємо ф-ю для формування меню */
add_action('admin_menu', 'myp_admin_action');Функція add_options_page приймає 5 параметрів:
- заголовок сторінки;
- назва пункту меню;
- рівень доступу (наприклад,
manage_options); - унікальний ідентифікатор;
- функція, що виводить HTML-форму.
У нашому випадку за форму відповідає myp_admin_page_options:
функція myp_admin_page_options()
{
?>
<div class="wrap">
<h2><?php echo __('Налаштування плагіна "Мій плагін"', '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
}Результат — HTML-форма з полями:

Детальніше про важливі елементи:
Перевірочне поле (nonce):
wp_nonce_field('update-options');Прихований action-параметр:
<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>Для отримання значень з БД:
get_option('myp_param1');Кнопка надсилання:
submit_button();
Нарешті, бажано реалізувати очищення налаштувань при деактивації плагіна (опціонально):
register_deactivation_hook(__FILE__, 'myp_deactivate');
function myp_deactivate()
{
delete_option('myp_param1');
delete_option('myp_param2');
}Front-end сайту (те, що бачить гість)
Щоб вивести збережені значення у шаблоні:
<?php echo get_option('myp_param1'); ?>
/*або*/
<?php echo get_option('myp_param2'); ?>На цьому все!
