Як написати простий плагін для WordPress

Як написати простий плагін для WordPress

Доброго дня! Хоч мій досвід створення плагінів поки що невеликий, у цій статті я хочу навести приклад розробки простого плагіна, який виконує такі завдання:

  1. Зберігання інформації в БД через панель адміністратора.
  2. Виведення цієї інформації на фронтенді — для гостей.

Перше, що нам потрібно зробити — створити папку для нашого плагіна в каталозі /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-форма з полями:

Форма плагіна My Plugin

Детальніше про важливі елементи:

Перевірочне поле (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'); ?>

На цьому все!

Пости на схожі теми

З вашим WordPress сайтом проблеми? потрібний додатковий функціонал? нестандартний плагін чи згорнути нову сторінку?
Тоді напишіть мені через форму зворотного зв'язку, і я намагатимусь вам допомогти.

Напишіть коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *