Для разработчика, работающего с WordPress, создание собственного плагина — важный и полезный навык. Это позволяет расширять функциональность сайта, внедрять кастомные решения и сохранять изменения при обновлениях. В этой статье подробно разберём, как создать свой плагин WordPress с нуля, рассмотрим базовую структуру, необходимые файлы и примеры кода для типичных задач.
Что такое плагин WordPress и зачем создавать свой
Плагин — это набор PHP-файлов, которые расширяют функциональность WordPress. Создавая свой плагин, вы получаете полную свободу в настройках и реализации, не меняя ядро и темы. Это особенно важно при разработке уникальных функций, которые нельзя реализовать с помощью готовых решений.
Преимущества собственного плагина:
- Контроль над кодом и функционалом
- Лёгкость обновления и переносимости
- Безопасность — минимизируете риск конфликтов
- Возможность публикации и распространения
Перед началом важно понимать базовые принципы работы WordPress: хуки (actions и filters), подключение скриптов и стилей, регистрация пользовательских типов записей и так далее.
Структура плагина WordPress: необходимые файлы и папки
Минимально для плагина понадобится один PHP-файл с заголовком и кодом. Однако для удобства и поддержки лучше создать папку с именем плагина и разместить внутри файлы:
wp-course-plugin.php— основной файл с заголовком плагина и основной логикойreadme.txt— описание плагина (опционально)assets/— папка с изображениями, скриптами, стилями
Пример заголовка плагина в wp-course-plugin.php:
<?php
/*
Plugin Name: WP Course Sample Plugin
Plugin URI: https://wp-course.ru
Description: Пример простого плагина для WP Course
Version: 1.0
Author: WP Course
Author URI: https://wp-course.ru
License: GPL2
*/
// Защита от прямого запуска файла
if (!defined('ABSPATH')) {
exit;
}
Такой заголовок позволяет WordPress распознавать плагин и отображать его в админке.
Регистрация хуков: actions и filters для расширения функционала
Основной способ взаимодействовать с WordPress — использовать хуки. Они позволяют добавить действия (actions) или модифицировать данные (filters) в нужных местах.
Например, добавим в плагин функцию, которая выводит приветственное сообщение в админке:
function wp_course_admin_notice() {
echo '<div class="notice notice-success is-dismissible"><p>Привет от WP Course Plugin!</p></div>';
}
add_action('admin_notices', 'wp_course_admin_notice');Этот код добавляет уведомление на всех страницах админки.
Фильтры: пример изменения контента
Фильтры позволяют изменять текст или данные. Например, заменим слово «WordPress» на «WP Course» в содержимом поста:
function wp_course_filter_content($content) {
return str_replace('WordPress', 'WP Course', $content);
}
add_filter('the_content', 'wp_course_filter_content');Такой подход полезен для небольших изменений без правки темы.
Регистрация пользовательских шорткодов для вывода контента
Шорткоды — мощный инструмент для добавления динамического контента в записи и страницы. Создадим простой шорткод, который выводит текущую дату:
function wp_course_current_date_shortcode() {
return date('d.m.Y');
}
add_shortcode('wp_course_date', 'wp_course_current_date_shortcode');Теперь в редакторе можно вставить [wp_course_date], и он заменится на текущую дату.
Шорткод с параметрами
Добавим параметр для формата даты:
function wp_course_date_format_shortcode($atts) {
$atts = shortcode_atts(array(
'format' => 'd.m.Y',
), $atts, 'wp_course_date_format');
return date($atts['format']);
}
add_shortcode('wp_course_date_format', 'wp_course_date_format_shortcode');Использование: [wp_course_date_format format="Y"] выведет год.
Подключение CSS и JS в плагине: правильный способ
Для стилей и скриптов нужно использовать функции wp_enqueue_style и wp_enqueue_script, подключая их через хуки.
Пример подключения стилей и скриптов в плагине:
function wp_course_enqueue_assets() {
wp_enqueue_style('wp_course_style', plugin_dir_url(__FILE__) . 'assets/css/style.css');
wp_enqueue_script('wp_course_script', plugin_dir_url(__FILE__) . 'assets/js/script.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'wp_course_enqueue_assets');Создайте папку assets и добавьте туда файлы style.css и script.js. Это обеспечит корректную загрузку ресурсов только на фронтенде.
Создание настроек плагина через Settings API
Для управления плагином из админки удобно использовать Settings API. Это позволяет создавать страницы настроек с полями, в которых можно сохранять значения.
Пример создания простой страницы настроек с одним полем:
function wp_course_register_settings() {
add_options_page('Настройки WP Course', 'WP Course', 'manage_options', 'wp_course_settings', 'wp_course_render_settings_page');
register_setting('wp_course_options_group', 'wp_course_option_text');
add_settings_section('wp_course_main_section', 'Основные настройки', null, 'wp_course_settings');
add_settings_field('wp_course_field_text', 'Введите текст', 'wp_course_field_text_cb', 'wp_course_settings', 'wp_course_main_section');
}
add_action('admin_menu', 'wp_course_register_settings');
function wp_course_render_settings_page() {
?>
<div class="wrap">
<h1>Настройки WP Course</h1>
<form method="post" action="options.php">
<?php
settings_fields('wp_course_options_group');
do_settings_sections('wp_course_settings');
submit_button();
?>
</form>
</div>
Теперь в меню «Настройки» появится пункт «WP Course» с формой для ввода и сохранения данных.
Пример расширенного плагина: регистрация кастомного типа записи
Добавим в плагин регистрацию собственного типа записи portfolio, чтобы демонстрировать проекты. Это распространённая задача при создании сайтов на WordPress.
function wp_course_register_post_type() {
$labels = array(
'name' => 'Портфолио',
'singular_name' => 'Проект',
'add_new' => 'Добавить проект',
'add_new_item' => 'Добавить новый проект',
'edit_item' => 'Редактировать проект',
'new_item' => 'Новый проект',
'view_item' => 'Просмотреть проект',
'search_items' => 'Искать проекты',
'not_found' => 'Проекты не найдены',
'not_found_in_trash' => 'В корзине проектов не найдено',
);
$args = array(
'labels' => $labels,
'public' => true,
'has_archive' => true,
'menu_position' => 5,
'supports' => array('title', 'editor', 'thumbnail'),
'show_in_rest' => true,
);
register_post_type('portfolio', $args);
}
add_action('init', 'wp_course_register_post_type');После активации плагина в админке появится новый тип записей «Портфолио».
Заключение
Создание плагина WordPress — задача, которая требует понимания архитектуры системы, работы хуков и API. В этой статье мы рассмотрели, как начать с нуля, создали базовую структуру, подключили стили и скрипты, добавили шорткоды и настройки, а также зарегистрировали пользовательский тип записи.
Используйте эти знания как фундамент для разработки более сложных и полезных плагинов, которые помогут вам и вашим клиентам эффективно расширять функциональность WordPress-сайтов.