Зачем создавать пользовательские настройки в 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 для настройки, чтобы не изобретать велосипед. Это улучшит совместимость и снизит количество ошибок.
Если настройка сложная, стоит разбивать её на несколько секций и полей, чтобы пользователь мог быстро ориентироваться.