Создание собственного плагина для WordPress — это отличный способ расширить функциональность сайта и решить уникальные задачи, которые не покрывают готовые решения. В этой статье мы подробно разберем, как создать простой, но полноценный плагин с нуля, включая структуру, подключение, настройку и добавление функционала на примере.
Что такое плагин WordPress и зачем его создавать
Плагин — это набор PHP-файлов, которые добавляют новые возможности вашему сайту на WordPress без изменения ядра системы. Плагины позволяют:
- Добавлять новые функции и виджеты;
- Интегрировать сторонние сервисы;
- Изменять поведение системы и интерфейса;
- Автоматизировать задачи.
Создание собственного плагина полезно, если вы хотите:
- Реализовать уникальный функционал;
- Поддерживать чистоту кода, отделяя кастомизацию от темы;
- Облегчить переносимость и обновления сайта.
Структура плагина WordPress: базовые файлы и папки
Минимальный плагин состоит из одного PHP-файла с определенным заголовком. Обычно создают отдельную папку в директории wp-content/plugins, где размещают все файлы плагина. Структура может выглядеть так:
wpdetect-myplugin/ // Папка плагина
wpdetect-myplugin.php // Главный файл плагина
README.txt // Описание (опционально)
assets/ // Папка для скриптов, стилей, изображений
includes/ // Вспомогательные PHP файлы
Главный файл должен содержать заголовок плагина, который WordPress видит в админке:
<?php
/*
Plugin Name: WPDetect MyPlugin
Plugin URI: https://wpdetect.ru/myplugin
Description: Пример собственного плагина для WordPress
Version: 1.0
Author: WPDetect Team
Author URI: https://wpdetect.ru
License: GPL2
*/
// Код плагина ниже
Создаем базовый функционал плагина: пример простого шорткода
Одной из самых популярных задач для плагина является добавление шорткода — специального тега в содержимое, который заменяется на динамический контент. Создадим шорткод [wpdetect_hello], который выводит приветствие.
function wpdetect_hello_shortcode($atts) {
$atts = shortcode_atts(
array('name' => 'Гость'),
$atts,
'wpdetect_hello'
);
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WPDetect.ru.</p>';
}
add_shortcode('wpdetect_hello', 'wpdetect_hello_shortcode');
Этот код нужно вставить в главный файл плагина. Теперь при добавлении в пост [wpdetect_hello name="Иван"] отобразится персональное приветствие.
Добавляем настройки плагина через админку WordPress
Чтобы сделать плагин гибким, полезно добавить страницу настроек в меню админки. Это позволит менять параметры без правки кода.
Регистрация страницы настроек
Используем хук admin_menu для добавления пункта меню:
function wpdetect_add_admin_menu() {
add_options_page(
'Настройки WPDetect MyPlugin',
'WPDetect MyPlugin',
'manage_options',
'wpdetect_myplugin',
'wpdetect_options_page'
);
}
add_action('admin_menu', 'wpdetect_add_admin_menu');
Создаем форму настроек
Добавим страницу с формой, где можно задать имя для приветствия:
function wpdetect_options_page() {
// Проверяем права
if (!current_user_can('manage_options')) {
return;
}
// Обрабатываем сохранение
if (isset($_POST['wpdetect_name'])) {
check_admin_referer('wpdetect_save_options');
update_option('wpdetect_name', sanitize_text_field($_POST['wpdetect_name']));
echo '<div class="updated">Настройки сохранены</div>';
}
$name = get_option('wpdetect_name', 'Гость');
?>
<div class="wrap">
<h1>Настройки WPDetect MyPlugin</h1>
<form method="post">
<?php wp_nonce_field('wpdetect_save_options'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">Имя для приветствия</th>
<td><input type="text" name="wpdetect_name" value="<?php echo esc_attr($name); ?>" /></td>
</tr>
</table>
<input type="submit" class="button-primary" value="Сохранить изменения" />
</form>
</div>
<?php
}
Таким образом, администратор сможет менять имя для приветствия без редактирования кода.
Использование настроек в шорткоде
Изменим шорткод, чтобы по умолчанию брать имя из настроек:
function wpdetect_hello_shortcode($atts) {
$default_name = get_option('wpdetect_name', 'Гость');
$atts = shortcode_atts(
array('name' => $default_name),
$atts,
'wpdetect_hello'
);
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на WPDetect.ru.</p>';
}
Подключение стилей и скриптов в плагине
Если в плагине есть интерфейсные элементы, важно корректно подключать CSS и JS, чтобы не конфликтовать с темой и другими плагинами.
Используем хук wp_enqueue_scripts для фронтенда и admin_enqueue_scripts для админки. Пример подключения CSS:
function wpdetect_enqueue_scripts() {
wp_enqueue_style('wpdetect-style', plugin_dir_url(__FILE__) . 'assets/css/style.css', array(), '1.0');
}
add_action('wp_enqueue_scripts', 'wpdetect_enqueue_scripts');
Для админки:
function wpdetect_admin_scripts($hook) {
if ($hook != 'settings_page_wpdetect_myplugin') {
return;
}
wp_enqueue_style('wpdetect-admin-style', plugin_dir_url(__FILE__) . 'assets/css/admin.css', array(), '1.0');
}
add_action('admin_enqueue_scripts', 'wpdetect_admin_scripts');
Отладка и локализация плагина
Для удобства отладки советую использовать функции типа error_log и WP_DEBUG. Также полезно делать плагин переводимым, оборачивая строки в __() и _e() с уникальным текстовым доменом.
Пример:
__('Привет, %s!', 'wpdetect-myplugin');
Полезные плагины для разработки и тестирования собственных плагинов
Несколько инструментов, которые помогут разработчику:
- Query Monitor — дебаггер запросов и ошибок.
- Debug Bar — панель отладки в админке.
- Plugin Boilerplate Generator — генератор шаблонов для плагинов.
- Code Snippets — позволяет тестировать куски кода без создания плагина.
Итог
Создание собственного плагина WordPress — это несложно, если понимать структуру и основные хуки. Начните с простого функционала, постепенно добавляя настройки, подключая стили и скрипты, и не забывайте о безопасности и производительности. В примере вы увидели, как создать шорткод с настройками через админку. Такой подход позволит гибко управлять функционалом и делать сайт уникальным.