Создание собственного плагина для WordPress — важный навык для разработчика, который позволяет расширять функциональность сайта без правки ядра и тем. В этой статье мы подробно разберем, как написать простой плагин с нуля, какие файлы обязательны, как регистрировать хуки и шорткоды, а также приведем готовые примеры кода.
Почему стоит создавать собственный плагин WordPress
Использование плагинов — стандартный способ добавлять функции в WordPress, но иногда готовые решения не подходят по функционалу или избыточны. Собственный плагин позволяет:
- Добавлять уникальные функции, специфичные для вашего проекта
- Избежать конфликтов при обновлении темы или ядра
- Держать код организованным и легко переносимым между сайтами
- Изучать внутренности WordPress и учиться правильной архитектуре
Далее рассмотрим, как создать простой плагин, который добавляет шорткод для отображения приветствия.
Структура плагина WordPress: минимальный набор файлов
Плагин в WordPress — это папка с PHP-файлом (а зачастую и с дополнительными файлами), которая размещается в директории wp-content/plugins/. Минимальный плагин — это один PHP-файл с заголовком.
Пример структуры:
wplock-greeting/ (папка плагина)
wplock-greeting.php (главный файл плагина)В файле wplock-greeting.php должен быть заголовок, который WordPress распознает:
<?php
/*
Plugin Name: WPLock Greeting
Plugin URI: https://wplock.ru
Description: Простой плагин для вывода приветствия через шорткод.
Version: 1.0
Author: WPLock
Author URI: https://wplock.ru
*/Без этого заголовка плагин не отобразится в списке установленных.
Регистрация шорткода: пример кода и объяснение
Самый простой способ добавить функционал — это зарегистрировать шорткод, который можно вставлять в контент страниц или записей.
Добавим функцию, которая выводит приветствие с возможностью передать имя пользователя:
function wplock_greeting_shortcode($atts) {
$atts = shortcode_atts(
array(
'name' => 'Гость',
),
$atts,
'wplock_greeting'
);
return '<p>Привет, ' . esc_html($atts['name']) . '! Добро пожаловать на сайт.</p>';
}
add_shortcode('wplock_greeting', 'wplock_greeting_shortcode');Объяснение:
shortcode_attsзадает стандартные значения атрибутов — в нашем случае имя по умолчанию «Гость».- Функция возвращает HTML с приветствием, используя
esc_htmlдля безопасности вывода. add_shortcodeрегистрирует шорткод[wplock_greeting], который можно вставить в пост или страницу.
Пример использования в контенте:
[wplock_greeting name="Иван"]В результате на странице появится: Привет, Иван! Добро пожаловать на сайт.
Добавление административной страницы плагина
Чтобы расширить плагин, можно добавить страницу настроек в админ-панель WordPress. Для этого используем хук admin_menu.
function wplock_add_admin_menu() {
add_menu_page(
'WPLock Greeting', // Заголовок страницы
'WPLock Greeting', // Название меню
'manage_options', // Возможность доступа
'wplock_greeting', // Слаг меню
'wplock_render_admin_page', // Функция вывода
'dashicons-smiley', // Иконка
100 // Позиция
);
}
add_action('admin_menu', 'wplock_add_admin_menu');
function wplock_render_admin_page() {
if (!current_user_can('manage_options')) {
return;
}
echo '<div class="wrap"><h1>Настройки WPLock Greeting</h1><p>Здесь можно добавить настройки плагина.</p></div>';
}После добавления кода в плагин в меню администратора появится новый пункт с указанной иконкой и страницей. В дальнейшем туда можно добавить формы для управления поведением плагина.
Безопасность и стандарты кодирования в плагинах WordPress
При создании плагина обязательно соблюдайте стандарты безопасности и качества:
- Используйте префиксы в именах функций и переменных, чтобы избежать конфликтов с другими плагинами (в нашем случае
wplock_). - Обрабатывайте и фильтруйте входящие данные, например, атрибуты шорткодов через
shortcode_attsиesc_html. - Проверяйте права доступа пользователей перед выводом административных страниц.
- Используйте WordPress API для добавления меню, настроек, AJAX и других функций.
Соблюдение этих правил не только улучшит качество кода, но и обеспечит стабильность и безопасность сайта.
Расширение функционала: пример добавления виджета
Еще один способ расширить плагин — создать виджет, который можно разместить в сайдбаре. Ниже пример простого виджета с приветствием:
class WPLock_Greeting_Widget extends WP_Widget {
public function __construct() {
parent::__construct(
'wplock_greeting_widget',
'WPLock Greeting',
array('description' => 'Приветственный виджет')
);
}
public function widget($args, $instance) {
echo $args['before_widget'];
$name = !empty($instance['name']) ? $instance['name'] : 'Гость';
echo '<p>Привет, ' . esc_html($name) . '!</p>';
echo $args['after_widget'];
}
public function form($instance) {
$name = !empty($instance['name']) ? $instance['name'] : '';
?>
<p>
<label for="<?php echo esc_attr($this->get_field_id('name')); ?>">Имя:</label>
<input class="widefat" id="<?php echo esc_attr($this->get_field_id('name')); ?>" name="<?php echo esc_attr($this->get_field_name('name')); ?>" type="text" value="<?php echo esc_attr($name); ?>" />
</p>
<?php
}
public function update($new_instance, $old_instance) {
$instance = array();
$instance['name'] = (!empty($new_instance['name'])) ? sanitize_text_field($new_instance['name']) : '';
return $instance;
}
}
add_action('widgets_init', function() {
register_widget('WPLock_Greeting_Widget');
});Этот виджет можно добавить в любую область виджетов сайта и настроить имя пользователя через админку.
Заключение
Создание собственного плагина — это первый шаг к серьезной разработке на WordPress. В статье мы рассмотрели минимальный шаблон плагина, регистрация шорткода, добавление административной страницы и виджета. На базе этих примеров можно строить более сложные решения, интегрировать API, работать с базой данных и многое другое.
Практикуйтесь, изучайте документацию WordPress и улучшайте свои навыки! Если нужно, на сайте WPLock.ru вы всегда найдете свежие руководства и примеры.