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

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

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

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

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

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

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

Регистрация страницы настроек с помощью функции add_theme_page

Начнём с простого примера создания раздела настроек в меню «Внешний вид».

function expertreview_theme_settings_page() {
    add_theme_page(
        'Настройки темы', // Заголовок страницы
        'Настройки темы', // Название в меню
        'manage_options',  // Права доступа
        'expertreview-theme-settings', // slug страницы
        'expertreview_render_theme_settings_page' // Функция вывода
    );
}
add_action('admin_menu', 'expertreview_theme_settings_page');

function expertreview_render_theme_settings_page() {
    // Здесь будет форма настроек
    echo '<h1>Настройки темы</h1>';
}

Этот код создаст новый пункт в меню «Внешний вид» — «Настройки темы». При переходе откроется страница, где мы будем размещать формы для ввода параметров.

Регистрация и сохранение настроек через Settings API

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

Добавим регистрацию опций и форму:

function expertreview_register_settings() {
    register_setting('expertreview_theme_options_group', 'expertreview_theme_options');
}
add_action('admin_init', 'expertreview_register_settings');

function expertreview_render_theme_settings_page() {
    $options = get_option('expertreview_theme_options');
    ?>
    <div class="wrap">
        <h1>Настройки темы</h1>
        <form method="post" action="options.php">
            <?php settings_fields('expertreview_theme_options_group'); ?>
            <?php do_settings_sections('expertreview_theme_options_group'); ?>

            <table class="form-table">
                <tr valign="top">
                    <th scope="row">Цвет фона</th>
                    <td><input type="text" name="expertreview_theme_options[background_color]" value="<?php echo esc_attr($options['background_color'] ?? ''); ?>" class="regular-text" /></td>
                </tr>
                <tr valign="top">
                    <th scope="row">Логотип (URL)</th>
                    <td><input type="text" name="expertreview_theme_options[logo_url]" value="<?php echo esc_attr($options['logo_url'] ?? ''); ?>" class="regular-text" /></td>
                </tr>
            </table>

            <?php submit_button(); ?>
        </form>
    </div>
    <?php
}

Теперь при заполнении формы и сохранении параметры будут храниться в базе. Для использования настроек в теме достаточно вызвать get_option('expertreview_theme_options').

Добавление более сложных полей и загрузка файлов

Использование медиа-загрузчика для логотипа

Для удобства загрузки логотипа лучше добавить кнопку вызова стандартного медиа-загрузчика WordPress. Это можно сделать с помощью JavaScript и поля input.

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

<input type="text" id="expertreview-logo-url" name="expertreview_theme_options[logo_url]" value="<?php echo esc_attr($options['logo_url'] ?? ''); ?>" class="regular-text" readonly />
<input type="button" id="upload-logo-button" class="button" value="Загрузить логотип" />

<script>
jQuery(document).ready(function($){
    var mediaUploader;
    $('#upload-logo-button').click(function(e) {
        e.preventDefault();
        if (mediaUploader) {
            mediaUploader.open();
            return;
        }
        mediaUploader = wp.media.frames.file_frame = wp.media({
            title: 'Выберите логотип',
            button: {
                text: 'Выбрать'
            },
            multiple: false
        });
        mediaUploader.on('select', function() {
            var attachment = mediaUploader.state().get('selection').first().toJSON();
            $('#expertreview-logo-url').val(attachment.url);
        });
        mediaUploader.open();
    });
});
</script>

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

Добавление цветового пика для выбора цвета

Чтобы улучшить UX, используйте компонент Color Picker, встроенный в WordPress с jQuery UI. Для подключения:

function expertreview_enqueue_admin_scripts($hook) {
    if ($hook != 'appearance_page_expertreview-theme-settings') {
        return;
    }
    wp_enqueue_style('wp-color-picker');
    wp_enqueue_script('expertreview-admin-script', get_template_directory_uri() . '/js/admin.js', array('wp-color-picker'), false, true);
}
add_action('admin_enqueue_scripts', 'expertreview_enqueue_admin_scripts');

// В файле admin.js
jQuery(document).ready(function($) {
    $('#expertreview_background_color').wpColorPicker();
});

В HTML нужно добавить id для поля цвета:

<input type="text" id="expertreview_background_color" name="expertreview_theme_options[background_color]" value="<?php echo esc_attr($options['background_color'] ?? ''); ?>" class="regular-text" />

Рекомендации по использованию плагинов для настройки тем

Если хочется ускорить разработку и получить готовый интерфейс, можно использовать плагины:

  • Kirki Customizer Framework — позволяет создавать гибкие настройки через Customizer API с поддержкой большого числа полей и удобным UI.
  • OptionTree — инструмент для быстрого создания страниц настроек и интеграции с Customizer.
  • WP Customizer — упрощённый плагин с набором полезных элементов для кастомизации.

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

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

После сохранения опций необходимо использовать их в шаблонах темы. Например, для установки цвета фона:

$options = get_option('expertreview_theme_options');
$background_color = $options['background_color'] ?? '#ffffff';
echo '<style>body { background-color: ' . esc_attr($background_color) . '; }</style>';

Для вывода логотипа:

$logo_url = $options['logo_url'] ?? '';
if ($logo_url) {
    echo '<img src="' . esc_url($logo_url) . '" alt="Логотип" />';
}

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

Как разделить длинный пост на страницы в WordPress
14.01.2026
Как использовать хук WooCommerce для изменения вывода категорий товаров
06.06.2026
Как исправить ошибку WooCommerce «Invalid security nonce» при оформлении заказа
05.07.2026
Как очистить базу данных WordPress от неиспользуемых данных: практические методы и примеры
16.03.2026
Как создать автоматические резервные копии WordPress с помощью плагинов
01.01.2026