Создание собственной настройки в админке WordPress — частая задача для разработчиков, которые хотят расширить функциональность сайта и предоставить пользователям удобный интерфейс для управления своими параметрами. В этой статье мы подробно разберём, как добавить новую страницу настроек в меню админки, зарегистрировать настройки, создать поля и сохранить данные. Всё это с примерами кода, которые можно использовать в своих плагинах или темах.
Почему стоит создавать свои настройки в админке WordPress
Добавление собственных настроек позволяет сделать сайт более гибким и удобным для конечного пользователя. Вместо того, чтобы править код напрямую, администратор может управлять параметрами через привычный интерфейс. Это особенно полезно для плагинов и кастомных решений, где нужны уникальные опции, не предусмотренные стандартным функционалом WordPress.
Кроме того, правильное создание настроек помогает избежать ошибок сохранения данных и обеспечивает совместимость с будущими обновлениями WordPress.
Как добавить страницу настроек в меню админки WordPress
Для начала создадим страницу в меню админки. Используем хук admin_menu и функцию add_options_page для добавления пункта меню в раздел «Настройки».
add_action('admin_menu', 'wpreg_add_settings_page');
function wpreg_add_settings_page() {
add_options_page(
'Настройки WPReg', // Заголовок страницы
'Настройки WPReg', // Название меню
'manage_options', // Возможности пользователя
'wpreg-settings', // Уникальный слаг страницы
'wpreg_render_settings_page' // Функция вывода контента
);
}Теперь создадим функцию wpreg_render_settings_page, которая выведет HTML формы для настроек.
Регистрация настроек и создание полей с помощью Settings API
Для правильного сохранения и валидации настроек используем Settings API. В хук admin_init добавим регистрацию настроек, секций и полей.
add_action('admin_init', 'wpreg_register_settings');
function wpreg_register_settings() {
register_setting('wpreg_options_group', 'wpreg_options', 'wpreg_options_validate');
add_settings_section(
'wpreg_main_section',
'Основные настройки WPReg',
'wpreg_section_text',
'wpreg-settings'
);
add_settings_field(
'wpreg_text_string',
'Текстовое поле',
'wpreg_setting_string',
'wpreg-settings',
'wpreg_main_section'
);
add_settings_field(
'wpreg_checkbox',
'Флажок включения',
'wpreg_setting_checkbox',
'wpreg-settings',
'wpreg_main_section'
);
}Функция вывода описания секции:
function wpreg_section_text() {
echo '<p>Настройки для плагина WPReg.</p>';
}Функции вывода полей:
function wpreg_setting_string() {
$options = get_option('wpreg_options');
$value = isset($options['text_string']) ? esc_attr($options['text_string']) : '';
echo "<input type='text' name='wpreg_options[text_string]' value='$value' />";
}
function wpreg_setting_checkbox() {
$options = get_option('wpreg_options');
$checked = isset($options['checkbox']) && $options['checkbox'] ? 'checked' : '';
echo "<input type='checkbox' name='wpreg_options[checkbox]' value='1' $checked />";
}Валидация и сохранение данных настроек
Чтобы избежать ошибок и нежелательных значений, настроим функцию валидации, которая проверит и очистит введённые пользователем данные перед сохранением.
function wpreg_options_validate($input) {
$output = array();
if (isset($input['text_string'])) {
$output['text_string'] = sanitize_text_field($input['text_string']);
}
$output['checkbox'] = !empty($input['checkbox']) ? 1 : 0;
return $output;
}Вывод формы настроек в админке
Теперь создадим форму для отображения на странице настроек. В ней будут использоваться стандартные функции WordPress для вывода полей и кнопки сохранения.
function wpreg_render_settings_page() {
?>
<div class="wrap">
<h1>Настройки WPReg</h1>
<form action="options.php" method="post">
<?php
settings_fields('wpreg_options_group');
do_settings_sections('wpreg-settings');
submit_button();
?>
</form>
</div>
<?php
}Пример использования созданных настроек в коде сайта
После сохранения настроек их можно получить через функцию get_option и использовать в шаблонах или логике плагина.
$options = get_option('wpreg_options');
if (!empty($options['checkbox'])) {
echo '<p>Флажок включён</p>';
}
if (!empty($options['text_string'])) {
echo '<p>Текст из настроек: ' . esc_html($options['text_string']) . '</p>';
}Дополнительные плагины для расширения функционала настроек
Если вы хотите упростить создание настроек, можно использовать готовые решения из каталога плагинов WordPress или продукты от WPSHOP. Например:
- Clearfy Pro — для оптимизации и управления настройками сайта;
- Expert Review — добавить функционал отзывов с настройками;
- My Popup — создание и настройка всплывающих окон с гибкими опциями.
Эти плагины предоставляют собственные интерфейсы настроек, которые можно интегрировать или использовать как пример для создания своих.
Резюме по созданию собственных настроек
Создание собственной страницы настроек в админке WordPress — это мощный способ предложить пользователю удобный интерфейс для управления параметрами вашего плагина или темы. Воспользуйтесь стандартным Settings API, чтобы обеспечить безопасность, правильное сохранение и структуру настроек.
Приведённые примеры кода помогут быстро начать работу и адаптировать решение под ваши задачи. А использование готовых плагинов из WPSHOP позволит значительно расширить функциональность вашего сайта без лишних затрат времени.