Создание собственного плагина — отличный способ расширить функциональность WordPress и сделать сайт уникальным. В этой статье мы подробно разберем, как написать простой, но полноценный плагин с нуля. Вы узнаете, как правильно структурировать файлы, зарегистрировать хуки и добавить пользовательские функции.
Почему стоит создавать собственный плагин
Использование готовых плагинов удобно, но они не всегда подходят под специфические задачи проекта. Создавая плагин самостоятельно, вы получаете полный контроль над функционалом, минимизируете нагрузку и улучшаете безопасность. Кроме того, это бесценный опыт для разработчика WordPress.
Также собственный плагин облегчает перенос настроек и функций между сайтами, не привязываясь к теме оформления.
Подготовка к разработке плагина
Перед началом разработки нужно подготовить рабочее пространство. В каталоге wp-content/plugins создайте новую папку, например, wpmanager-simple-plugin. В ней будет располагаться основной PHP-файл плагина и, при необходимости, дополнительные ресурсы.
Минимальная структура плагина:
wpmanager-simple-plugin/— папка плагинаwpmanager-simple-plugin/wpmanager-simple-plugin.php— главный файл плагина
В главном файле обязательно нужно добавить заголовок плагина, чтобы WordPress смог его распознать:
<?php
/**
* Plugin Name: WPManager Simple Plugin
* Description: Пример простого плагина для WordPress от WPManager.ru
* Version: 1.0
* Author: WPManager
*/
Регистрация активации и деактивации плагина
Очень важно грамотно обрабатывать события активации и деактивации плагина. Это позволит, например, создавать необходимые таблицы в базе или удалять временные данные.
Используем функции register_activation_hook и register_deactivation_hook. Пример из нашего плагина:
function wpmanager_activation() {
// Код, выполняемый при активации плагина
error_log('WPManager Simple Plugin activated');
}
register_activation_hook(__FILE__, 'wpmanager_activation');
function wpmanager_deactivation() {
// Код, выполняемый при деактивации плагина
error_log('WPManager Simple Plugin deactivated');
}
register_deactivation_hook(__FILE__, 'wpmanager_deactivation');
В реальном плагине здесь можно создавать таблицы или очищать кэш.
Добавление пользовательского шорткода
Шорткоды — простой способ вставлять динамический контент в записи и страницы. Создадим шорткод [wpmanager_hello], который выводит приветствие.
Добавим функцию:
function wpmanager_hello_shortcode() {
return '<p>Привет от WPManager Simple Plugin!</p>';
}
add_shortcode('wpmanager_hello', 'wpmanager_hello_shortcode');
Теперь при вставке [wpmanager_hello] в содержимое сайта будет выводиться текст приветствия.
Как расширить шорткод параметрами
Давайте добавим возможность передавать имя пользователя в шорткод, чтобы вывод был персонализированным.
function wpmanager_hello_shortcode($atts) {
$atts = shortcode_atts([
'name' => 'Гость',
], $atts, 'wpmanager_hello');
return '<p>Привет, ' . esc_html($atts['name']) . '!</p>';
}
add_shortcode('wpmanager_hello', 'wpmanager_hello_shortcode');
Пример использования: [wpmanager_hello name="Иван"].
Добавление настроек в админ-панель
Чтобы сделать плагин удобнее, добавим страницу настроек в меню WordPress. Для этого используем функцию add_options_page.
Пример кода для создания страницы настроек:
function wpmanager_add_settings_page() {
add_options_page(
'Настройки WPManager',
'WPManager',
'manage_options',
'wpmanager-settings',
'wpmanager_render_settings_page'
);
}
add_action('admin_menu', 'wpmanager_add_settings_page');
function wpmanager_render_settings_page() {
?>
<div class="wrap">
<h1>Настройки WPManager Simple Plugin</h1>
<form method="post" action="options.php">
<?php
settings_fields('wpmanager_options_group');
do_settings_sections('wpmanager-settings');
submit_button();
?>
</form>
</div>
<?php
}
Далее необходимо зарегистрировать настройки и добавить поля. Это делается через хук admin_init:
function wpmanager_register_settings() {
register_setting('wpmanager_options_group', 'wpmanager_option_name');
add_settings_section(
'wpmanager_main_section',
'Основные настройки',
null,
'wpmanager-settings'
);
add_settings_field(
'wpmanager_option_name',
'Значение опции',
'wpmanager_option_callback',
'wpmanager-settings',
'wpmanager_main_section'
);
}
add_action('admin_init', 'wpmanager_register_settings');
function wpmanager_option_callback() {
$value = get_option('wpmanager_option_name', '');
echo '<input type="text" name="wpmanager_option_name" value="' . esc_attr($value) . '" />';
}
Теперь в админке появится страница с одной текстовой настройкой, которую можно сохранять.
Пример использования настроек в плагине
Допустим, мы хотим, чтобы шорткод выводил текст из настроек. Модифицируем функцию шорткода:
function wpmanager_hello_shortcode($atts) {
$custom_text = get_option('wpmanager_option_name', 'Привет от WPManager Simple Plugin!');
return '<p>' . esc_html($custom_text) . '</p>';
}
Теперь администратор может менять текст приветствия через настройки плагина.
Обработка AJAX-запросов в плагине
Для интерактивности добавим обработчик AJAX. Например, кнопка на сайте будет отправлять запрос и получать ответ от сервера.
Добавим скрипт и обработчик:
function wpmanager_enqueue_scripts() {
wp_enqueue_script('wpmanager-ajax-script', plugin_dir_url(__FILE__) . 'js/wpmanager-ajax.js', ['jquery'], null, true);
wp_localize_script('wpmanager-ajax-script', 'wpmanager_ajax', [
'ajax_url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('wpmanager_nonce')
]);
}
add_action('wp_enqueue_scripts', 'wpmanager_enqueue_scripts');
function wpmanager_ajax_handler() {
check_ajax_referer('wpmanager_nonce', 'security');
$response = ['message' => 'AJAX запрос успешно обработан!'];
wp_send_json_success($response);
}
add_action('wp_ajax_wpmanager_action', 'wpmanager_ajax_handler');
add_action('wp_ajax_nopriv_wpmanager_action', 'wpmanager_ajax_handler');
Создайте файл js/wpmanager-ajax.js с таким содержимым:
jQuery(document).ready(function($) {
$('#wpmanager-button').on('click', function() {
$.post(wpmanager_ajax.ajax_url, {
action: 'wpmanager_action',
security: wpmanager_ajax.nonce
}, function(response) {
if(response.success) {
alert(response.data.message);
} else {
alert('Ошибка AJAX запроса');
}
});
});
});
Вставьте на страницу кнопку с id wpmanager-button, чтобы проверить работу AJAX.
Безопасность и стандарты кодирования
При разработке плагина обязательно используйте функции экранирования (esc_html, esc_attr), проверяйте права пользователей и используйте nonce для AJAX-запросов. Это защитит сайт от XSS и CSRF атак.
Также придерживайтесь стандарта кодирования WordPress для повышения читаемости и поддержки кода.
Итоги
Мы рассмотрели полный процесс создания простого, но функционального плагина для WordPress: от структуры и заголовков до админки и AJAX. Вы можете использовать этот каркас как основу и добавлять свои уникальные функции.
Создавайте свои плагины, адаптируйте WordPress под задачи проекта и делайте сайты лучше!