WordPress: как использовать хуки для создания настроек темы

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

Что такое хуки в WordPress и зачем они нужны для настроек темы

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

Для создания настроек темы чаще всего используются actions, чтобы добавить поля настроек, и filters, чтобы обработать или изменить данные перед их выводом.

Применение хуков даёт гибкость и безопасность, а также упрощает поддержку кода при обновлениях.

Какие хуки применяются для добавления настроек темы

Основной хук для добавления настроек в кастомайзер — customize_register. Он позволяет зарегистрировать новые секции, настройки и контролы в кастомайзере WordPress.

Для добавления настроек в админку можно использовать хук admin_init, чтобы зарегистрировать свои опции и поля через API настроек WordPress.

Также фильтры, например, theme_mod_{$name}, позволяют модифицировать значения настроек темы.

Практический пример: добавляем настройку цвета фона в кастомайзер

Рассмотрим, как через хук customize_register добавить новую настройку цвета фона сайта и контрол для выбора цвета.

function wpzen_customize_register_background_color($wp_customize) {
    // Добавляем секцию
    $wp_customize->add_section('wpzen_background_section', [
        'title' => 'Цвет фона',
        'priority' => 30,
    ]);

    // Добавляем настройку
    $wp_customize->add_setting('wpzen_background_color', [
        'default' => '#ffffff',
        'sanitize_callback' => 'sanitize_hex_color',
        'transport' => 'refresh',
    ]);

    // Добавляем контрол выбора цвета
    $wp_customize->add_control(new WP_Customize_Color_Control($wp_customize, 'wpzen_background_color_control', [
        'label' => 'Выберите цвет фона',
        'section' => 'wpzen_background_section',
        'settings' => 'wpzen_background_color',
    ]));
}
add_action('customize_register', 'wpzen_customize_register_background_color');

Этот код добавит в кастомайзер новую секцию с выбором цвета фона. Пользователь сможет изменить цвет, а тема получит доступ к значению через функцию get_theme_mod('wpzen_background_color').

Подключение выбранного цвета в стили темы

Для применения выбранного цвета нужно динамически вставить CSS. Это можно сделать через хук wp_head:

function wpzen_add_custom_background_color_style() {
    $color = get_theme_mod('wpzen_background_color', '#ffffff');
    echo "<style>body { background-color: {$color}; }</style>";
}
add_action('wp_head', 'wpzen_add_custom_background_color_style');

Так мы обеспечим автоматическое применение выбранного цвета без необходимости править CSS-файлы вручную.

Добавление настроек в админку через hooks: пример с текстовым полем

Если нужно добавить настройки не в кастомайзер, а в отдельную страницу настроек в админке, то используется хук admin_menu для создания страницы и admin_init для регистрации опций.

function wpzen_create_settings_page() {
    add_menu_page(
        'WPZen Настройки',
        'WPZen Настройки',
        'manage_options',
        'wpzen-settings',
        'wpzen_render_settings_page'
    );
}
add_action('admin_menu', 'wpzen_create_settings_page');

function wpzen_register_settings() {
    register_setting('wpzen_options_group', 'wpzen_custom_text', [
        'sanitize_callback' => 'sanitize_text_field',
    ]);
    add_settings_section('wpzen_main_section', 'Основные настройки', null, 'wpzen-settings');
    add_settings_field('wpzen_custom_text_field', 'Введите текст', 'wpzen_custom_text_callback', 'wpzen-settings', 'wpzen_main_section');
}
add_action('admin_init', 'wpzen_register_settings');

function wpzen_custom_text_callback() {
    $value = get_option('wpzen_custom_text', '');
    echo '<input type="text" name="wpzen_custom_text" value="' . esc_attr($value) . '" class="regular-text" />';
}

function wpzen_render_settings_page() {
    ?>
    <div class="wrap">
        <h1>Настройки WPZen</h1>
        <form method="post" action="options.php">
            <?php
                settings_fields('wpzen_options_group');
                do_settings_sections('wpzen-settings');
                submit_button();
            ?>
        </form>
    </div>
    <?php
}

Этот код создаст в админке страницу с текстовым полем, данные которого сохраняются в опцию wpzen_custom_text. При необходимости этот текст можно вывести на сайте через get_option('wpzen_custom_text').

Как использовать фильтры для изменения настроек темы

Фильтры позволяют модифицировать значения настроек перед их использованием. Например, можно добавить фильтр на значение цвета, чтобы запретить определённые цвета или подменить значение.

function wpzen_filter_background_color($color) {
    // Запретим использовать красный цвет
    if ($color === '#ff0000') {
        return '#000000'; // Заменим на чёрный
    }
    return $color;
}
add_filter('theme_mod_wpzen_background_color', 'wpzen_filter_background_color');

Этот пример показывает, как через фильтр «theme_mod_имя_настройки» можно контролировать значение и улучшать UX.

Рекомендации и советы по работе с хуками и настройками темы

  • Всегда используйте префиксы, например, wpzen_, чтобы избежать конфликтов с другими плагинами и темами.
  • Для безопасности обязательно применяйте функции санитизации (sanitize_text_field, sanitize_hex_color и пр.) при сохранении настроек.
  • Тестируйте изменения на локальной копии сайта, чтобы избежать сбоев на проде.
  • Используйте transport => 'postMessage' в кастомайзере для мгновенного предпросмотра изменений без перезагрузки, если это возможно.

Полезные плагины для расширения возможностей работы с настройками темы

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

  • Customizer Export/Import — экспорт и импорт настроек кастомайзера.
  • Clearfy Pro — оптимизация и расширенные настройки безопасности, включая управление хуками.

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

Автоматический экспорт отчетов WooCommerce в PDF: пошаговое руководство
05.02.2026
Как ускорить загрузку изображений в WordPress с помощью lazy load и оптимизации
17.04.2026
WooCommerce: автоматическое удаление неактивных заказов через Cron и PHP
18.06.2026
WooCommerce: автоматическое удаление неактивных заказов с помощью Cron и PHP
03.06.2026
WooCommerce: как использовать метод AJAX для обновления корзины без перезагрузки страницы
23.05.2026