Как создать настройку в WordPress для пользователя

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

Часто при разработке плагинов или тем возникает необходимость добавить настройки, которые сможет изменять конечный пользователь через админ-панель WordPress. Это позволяет гибко настраивать функциональность сайта без правки кода. Создание удобного интерфейса настроек повышает качество продукта и облегчает поддержку.

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

Основы: добавление страницы настроек в админку WordPress

Для начала нам нужно зарегистрировать новую страницу в меню админки. Для этого используется функция add_options_page или add_menu_page. Например, добавим страницу настроек с названием "Настройки WPAssist":

function wpassist_add_settings_page() {
    add_options_page(
        'Настройки WPAssist',
        'WPAssist',
        'manage_options',
        'wpassist-settings',
        'wpassist_render_settings_page'
    );
}
add_action('admin_menu', 'wpassist_add_settings_page');

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

Вывод формы настроек

Далее создадим функцию wpassist_render_settings_page, которая выведет форму с настройками. В WordPress для сохранения настроек удобно использовать API настроек:

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

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

Чтобы WordPress знал, какие настройки сохранять, нужно зарегистрировать их через register_setting, а также добавить секции и поля с помощью add_settings_section и add_settings_field. Это делается так:

function wpassist_settings_init() {
    register_setting('wpassist_options_group', 'wpassist_options', 'wpassist_options_validate');

    add_settings_section(
        'wpassist_main_section',
        'Основные настройки',
        'wpassist_section_text',
        'wpassist-settings'
    );

    add_settings_field(
        'wpassist_text_field',
        'Текстовое поле',
        'wpassist_text_field_render',
        'wpassist-settings',
        'wpassist_main_section'
    );
}
add_action('admin_init', 'wpassist_settings_init');

function wpassist_section_text() {
    echo '<p>Настройте параметры плагина WPAssist.</p>';
}

function wpassist_text_field_render() {
    $options = get_option('wpassist_options');
    ?>
    <input type="text" name="wpassist_options[text_field]" value="<?php echo isset($options['text_field']) ? esc_attr($options['text_field']) : ''; ?>">
    <?php
}

function wpassist_options_validate($input) {
    $newinput = array();
    if (isset($input['text_field'])) {
        $newinput['text_field'] = sanitize_text_field($input['text_field']);
    }
    return $newinput;
}

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

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

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

  • Advanced Custom Fields (ACF) — позволяет создавать удобные формы и поля, включая настройки для темы или плагина.
  • OptionTree — библиотека для создания страниц настроек с множеством типов полей.
  • CMB2 — мощный фреймворк для создания мета-боксов и настроек.

Например, при использовании CMB2 код для создания настройки будет выглядеть так:

function wpassist_register_cmb2_options_page() {
    $cmb = new_cmb2_box(array(
        'id'           => 'wpassist_options_page',
        'title'        => __('Настройки WPAssist', 'wpassist'),
        'object_types' => array('options-page'),
        'option_key'   => 'wpassist_options',
        'menu_title'   => __('WPAssist'),
        'parent_slug'  => 'options-general.php',
    ));

    $cmb->add_field(array(
        'name' => 'Текстовое поле',
        'id'   => 'text_field',
        'type' => 'text',
    ));
}
add_action('cmb2_admin_init', 'wpassist_register_cmb2_options_page');

Как получить и использовать сохранённые настройки в шаблонах и плагинах

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

$options = get_option('wpassist_options');
$text = isset($options['text_field']) ? $options['text_field'] : '';
echo 'Значение поля: ' . esc_html($text);

Это можно делать как в коде плагина, так и в шаблонах темы. Главное — использовать фильтры безопасности и экранировать вывод.

Советы по безопасности и удобству

При работе с настройками важно помнить о безопасности. Всегда проверяйте права пользователя, который пытается изменить настройки (обычно manage_options), валидируйте и фильтруйте входящие данные перед сохранением.

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

Если настройка сложная, стоит разбивать её на несколько секций и полей, чтобы пользователь мог быстро ориентироваться.

Как использовать WordPress hooks для автоматизации задач
12.11.2025
Как удалить неиспользуемые метаданные в WordPress для оптимизации базы данных
29.12.2025
Как избежать конфликтов между WooCommerce и другими плагинами WordPress
20.04.2026
Как удалить пустые термины в таксономии WordPress с примерами кода
14.02.2026
Как настроить автоматическое удаление старого контента в WordPress
02.04.2026