wpwebsite.ru wordpress WPWebSite

Как создать свой плагин WordPress с применением hooks

Создание собственного плагина WordPress — важный навык для любого разработчика, который хочет расширить функциональность своего сайта без правки ядра. В этой статье мы подробно разберём, как создать плагин с применением hooks — actions и filters, которые позволяют интегрировать ваш код в процессы WordPress.

Что такое hooks в WordPress и зачем они нужны

Hooks — это точки подключения в ядре WordPress, с помощью которых можно запускать собственные функции в нужный момент. Они бывают двух видов:

  • Actions — выполняют ваши функции, не изменяя данные.
  • Filters — изменяют данные перед выводом или сохранением.

Использование hooks — это лучший способ расширять функциональность без изменения кода WordPress, что сохраняет совместимость и упрощает обновления.

Пример использования action и filter

Допустим, нам нужно добавить сообщение внизу каждой статьи и изменить заголовок записи:

function wpwebsite_add_footer_message() {
    echo '<p>Спасибо за чтение!</p>';
}
add_action('the_content', 'wpwebsite_add_footer_message');

function wpwebsite_change_post_title($title) {
    return 'WPWebsite: ' . $title;
}
add_filter('the_title', 'wpwebsite_change_post_title');

Но для полноценного плагина это нужно оформить правильно.

Структура плагина WordPress: создаём с нуля

Для начала создайте в папке wp-content/plugins новую папку, например wpwebsite-custom-plugin. В ней создайте файл wpwebsite-custom-plugin.php. В начале файла укажите шапку плагина:

<?php
/*
Plugin Name: WPWebsite Custom Plugin
Description: Пример плагина с использованием hooks
Version: 1.0
Author: WPWebsite.ru
*/

Это минимальный набор для регистрации плагина в админке.

Регистрация actions и filters

Далее добавим код, который подключит наши функции к хукам. Для лучшей читаемости и избежания конфликтов используем префикс wpwebsite_ в именах функций.

function wpwebsite_add_footer_message($content) {
    if (is_single()) {
        $content .= '<p>Спасибо за чтение на WPWebsite.ru!</p>';
    }
    return $content;
}
add_filter('the_content', 'wpwebsite_add_footer_message');

function wpwebsite_modify_post_title($title, $id = null) {
    if (is_single($id) && in_the_loop()) {
        $title = 'WPWebsite: ' . $title;
    }
    return $title;
}
add_filter('the_title', 'wpwebsite_modify_post_title', 10, 2);

Обратите внимание, что для the_title мы передаём два аргумента, поэтому указываем количество параметров в add_filter.

Добавляем настройки плагина в админку с использованием Settings API

Чтобы сделать плагин удобнее, добавим страницу настроек, где можно будет менять текст сообщения. Используем встроенный в WordPress Settings API.

Создание страницы настроек

Добавим хук admin_menu для создания меню:

function wpwebsite_add_admin_menu() {
    add_options_page(
        'WPWebsite Настройки',
        'WPWebsite Опции',
        'manage_options',
        'wpwebsite-settings',
        'wpwebsite_settings_page'
    );
}
add_action('admin_menu', 'wpwebsite_add_admin_menu');

Теперь создадим функцию отображения страницы:

function wpwebsite_settings_page() {
    ?>
    <div class="wrap">
        <h1>Настройки WPWebsite Custom Plugin</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('wpwebsite_settings_group');
            do_settings_sections('wpwebsite-settings');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

Регистрация настроек и полей

Добавим в admin_init регистрацию настроек:

function wpwebsite_settings_init() {
    register_setting('wpwebsite_settings_group', 'wpwebsite_footer_text');

    add_settings_section(
        'wpwebsite_section',
        'Основные настройки',
        function() { echo '<p>Измените текст внизу записи.</p>'; },
        'wpwebsite-settings'
    );

    add_settings_field(
        'wpwebsite_footer_text',
        'Текст внизу записи',
        'wpwebsite_footer_text_render',
        'wpwebsite-settings',
        'wpwebsite_section'
    );
}
add_action('admin_init', 'wpwebsite_settings_init');

function wpwebsite_footer_text_render() {
    $value = get_option('wpwebsite_footer_text', 'Спасибо за чтение на WPWebsite.ru!');
    echo '<input type="text" name="wpwebsite_footer_text" value="' . esc_attr($value) . '" style="width: 400px;" />';
}

Теперь изменим функцию добавления сообщения, чтобы использовать эту настройку:

function wpwebsite_add_footer_message($content) {
    if (is_single()) {
        $footer_text = get_option('wpwebsite_footer_text', 'Спасибо за чтение на WPWebsite.ru!');
        $content .= '<p>' . esc_html($footer_text) . '</p>';
    }
    return $content;
}

Полезные плагины для разработки и отладки своих плагинов

При создании плагинов удобно использовать инструменты, которые облегчают жизнь:

  • Query Monitor — отладка запросов, хуков и ошибок.
  • Debug Bar — выводит дебаг-информацию в админке.
  • Log Deprecated Notices — помогает выявлять устаревшие функции.
  • Plugin Boilerplate Generator — генератор шаблона плагина с хорошей структурой.

Эти плагины полезны как новичкам, так и опытным разработчикам.

Советы по безопасности и производительности

При разработке плагина помните:

  • Используйте esc_html, esc_attr для вывода данных.
  • Не забывайте проверять права доступа, например, current_user_can('manage_options') для админских страниц.
  • Минимизируйте количество запросов и используйте кэширование, если нужно.
  • Пишите код с префиксами, чтобы избежать конфликтов с другими плагинами.

Заключение

Создание собственного плагина с использованием хуков и настроек — отличное решение для кастомизации WordPress под свои задачи. В статье мы рассмотрели базовую структуру плагина, работу с action и filter, добавление страницы настроек и лучшие практики разработки. Используйте этот шаблон как основу для своих проектов и развивайтесь дальше!

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙