Как создать настройку темы WordPress своими руками

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

Почему стоит создавать собственные настройки темы WordPress

Настройка темы через Customizer API — современный и удобный способ управлять внешним видом сайта. Это улучшает пользовательский опыт и расширяет возможности темы без необходимости установки сторонних плагинов. Благодаря этому, вы сможете:

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

Давайте перейдём к практической части и рассмотрим, как реализовать базовую панель настроек.

Используем WordPress Customizer API для создания настроек

WordPress предоставляет удобный API для добавления собственных настроек в раздел «Внешний вид → Настроить». Основные элементы, с которыми мы будем работать:

  • add_section — добавляет раздел в кастомайзер.
  • add_setting — регистрирует настройку.
  • add_control — добавляет элемент управления (поле, переключатель и т.д.) для настройки.

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

function wpmarketing_customize_register($wp_customize) {
    // Добавляем секцию
    $wp_customize->add_section('wpmarketing_colors_section', array(
        'title'    => __('Цвета темы', 'wpmarketing'),
        'priority' => 30,
    ));

    // Добавляем настройку цвета фона
    $wp_customize->add_setting('wpmarketing_background_color', array(
        'default'   => '#ffffff',
        'transport' => 'refresh',
    ));

    // Добавляем контрол для выбора цвета
    $wp_customize->add_control(new WP_Customize_Color_Control($wp_customize, 'wpmarketing_background_color_control', array(
        'label'    => __('Цвет фона', 'wpmarketing'),
        'section'  => 'wpmarketing_colors_section',
        'settings' => 'wpmarketing_background_color',
    )));
}
add_action('customize_register', 'wpmarketing_customize_register');

Этот код создаст новую секцию с названием «Цвета темы» и элементом управления для выбора цвета фона.

Как применить выбранные настройки на сайте

Чтобы выбранный цвет фона отображался на сайте, нужно внедрить соответствующий CSS. Для этого используем хук wp_head и функцию, которая выведет динамический стиль:

function wpmarketing_customize_css() {
    $background_color = get_theme_mod('wpmarketing_background_color', '#ffffff');
    echo '<style>body { background-color: ' . esc_attr($background_color) . '; }</style>';
}
add_action('wp_head', 'wpmarketing_customize_css');

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

Добавление дополнительных типов настроек: текст, переключатели и изображения

Помимо цвета, в настройках темы часто нужны текстовые поля, переключатели (checkbox) и загрузка изображений (например, логотипа). Рассмотрим примеры каждого:

Текстовое поле для контактного телефона

$wp_customize->add_section('wpmarketing_contact_section', array(
    'title' => __('Контактная информация', 'wpmarketing'),
    'priority' => 40,
));

$wp_customize->add_setting('wpmarketing_contact_phone', array(
    'default' => '',
    'sanitize_callback' => 'sanitize_text_field',
));

$wp_customize->add_control('wpmarketing_contact_phone_control', array(
    'label' => __('Телефон для контакта', 'wpmarketing'),
    'section' => 'wpmarketing_contact_section',
    'settings' => 'wpmarketing_contact_phone',
    'type' => 'text',
));

Переключатель для включения/отключения отображения телефона

$wp_customize->add_setting('wpmarketing_show_phone', array(
    'default' => true,
    'sanitize_callback' => 'wpmarketing_sanitize_checkbox',
));

$wp_customize->add_control('wpmarketing_show_phone_control', array(
    'label' => __('Показывать телефон', 'wpmarketing'),
    'section' => 'wpmarketing_contact_section',
    'settings' => 'wpmarketing_show_phone',
    'type' => 'checkbox',
));

function wpmarketing_sanitize_checkbox($checked) {
    return ((isset($checked) && $checked === true) ? true : false);
}

Загрузка логотипа

$wp_customize->add_setting('wpmarketing_logo');

$wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, 'wpmarketing_logo_control', array(
    'label' => __('Логотип сайта', 'wpmarketing'),
    'section' => 'title_tagline', // Используем стандартный раздел
    'settings' => 'wpmarketing_logo',
)));

// В шаблоне темы вывод логотипа:
$logo = get_theme_mod('wpmarketing_logo');
if ($logo) {
    echo '<img src="' . esc_url($logo) . '" alt="' . get_bloginfo('name') . '">';
}

Советы по безопасности и валидации данных в настройках

Очень важно валидировать и очищать данные, которые вводит пользователь, чтобы избежать XSS атак и других проблем безопасности. Для этого:

  • Используйте sanitize_text_field для простого текста.
  • Для чекбоксов создайте свою функцию-валидацию, как в примере выше wpmarketing_sanitize_checkbox.
  • Для URL используйте esc_url_raw и sanitize_text_field согласно контексту.

Также рекомендуется тестировать каждую настройку при вводе и выводе, чтобы избежать ошибок и некорректного отображения.

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

После добавления настроек важно проверить работу панели в админке, а также корректность применения изменений на фронтенде. Для этого:

  • Откройте раздел «Внешний вид → Настроить» и убедитесь, что все новые опции отображаются и работают.
  • Измените настройки и посмотрите, как меняется сайт.
  • Включите WP_DEBUG для выявления предупреждений или ошибок.
  • Проверьте вывод CSS и HTML в исходном коде страницы.

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

Заключение: почему собственные настройки — это выгодно и удобно

Создание собственной панели настроек через Customizer API — это мощное решение, позволяющее сделать тему гибкой и удобной для конечного пользователя без лишних плагинов. Такой подход улучшает контроль над дизайном, повышает ценность темы и облегчает её поддержку.

Экспериментируйте с разными типами контролов и добавляйте функции, которые действительно нужны вашим пользователям. И помните о безопасности и удобстве интерфейса!

Как создать динамический маркетинговый календарь в WordPress
13.02.2026
Как автоматизировать управление SEO метаданными в WordPress
26.03.2026
Как создать собственный тип постов в WordPress
08.12.2025
Как добавить и удалить поля в оформлении заказа WooCommerce без плагинов
31.05.2026
Удаление зависимых от плагинов данных после их удаления в WordPress
27.04.2026