Если вы разрабатываете собственный плагин для WordPress, рано или поздно возникает необходимость добавить страницу настроек, где пользователь сможет управлять параметрами плагина. В этой статье мы подробно рассмотрим, как создать страницу настроек для плагина в админке WordPress, используя стандартные функции API настроек. Рассмотрим примеры кода и лучшие практики, чтобы сделать интерфейс удобным и безопасным.
Зачем создавать страницу настроек для плагина
Для улучшения функционала плагина часто требуется дать пользователю возможность менять параметры без правки кода. Это могут быть API-ключи, параметры отображения, лимиты и многое другое. Страница настроек в админке WordPress является стандартным способом сделать это.
Использование стандартного Settings API гарантирует, что настройки будут сохраняться безопасно, корректно отображаться и легко расширяться в будущем.
Создание базовой страницы настроек: добавляем меню и форму
Первым шагом является регистрация страницы настроек в меню админки. Для этого используем хук admin_menu и функцию add_options_page() для создания страницы в разделе «Настройки».
add_action('admin_menu', 'wplist_add_plugin_settings_page');
function wplist_add_plugin_settings_page() {
add_options_page(
'Настройки моего плагина', // Заголовок страницы
'Мой плагин', // Текст меню
'manage_options', // Возможность доступа
'wplist-plugin-settings', // Уникальный slug страницы
'wplist_render_settings_page' // Функция вывода
);
}Теперь нужно создать функцию wplist_render_settings_page(), которая выведет форму с настройками.
function wplist_render_settings_page() {
// Проверяем права
if (!current_user_can('manage_options')) {
return;
}
// Выводим форму
?>
<div class="wrap">
<h1>Настройки моего плагина</h1>
<form method="post" action="options.php">
<?php
settings_fields('wplist_plugin_options_group'); // Группа настроек
do_settings_sections('wplist-plugin-settings'); // Страницы настроек
submit_button();
?>
</form>
</div>
<?php
}Регистрация настроек и создание полей
Чтобы наши настройки сохранялись и отображались, необходимо зарегистрировать их через Settings API. Используем хук admin_init:
add_action('admin_init', 'wplist_register_settings');
function wplist_register_settings() {
register_setting(
'wplist_plugin_options_group', // Группа
'wplist_plugin_options', // Опции (массив)
'wplist_sanitize_options' // Функция очистки данных
);
add_settings_section(
'wplist_main_section', // ID
'Основные настройки', // Заголовок
'wplist_main_section_callback', // Описание
'wplist-plugin-settings' // Страница
);
add_settings_field(
'api_key', // ID поля
'API ключ', // Заголовок поля
'wplist_api_key_render', // Функция вывода поля
'wplist-plugin-settings', // Страница
'wplist_main_section' // Секция
);
add_settings_field(
'enable_feature',
'Включить функцию',
'wplist_enable_feature_render',
'wplist-plugin-settings',
'wplist_main_section'
);
}Описание секции настроек
Функция обратного вызова для описания раздела настроек:
function wplist_main_section_callback() {
echo '<p>Настройте основные параметры плагина.</p>';
}Вывод полей настроек
Для каждого поля нужно вывести HTML-код формы:
function wplist_api_key_render() {
$options = get_option('wplist_plugin_options');
?>
<input type="text" name="wplist_plugin_options[api_key]" value="<?php echo isset($options['api_key']) ? esc_attr($options['api_key']) : ''; ?>" class="regular-text" />
<p class="description">Введите API ключ для интеграции.</p>
<?php
}
function wplist_enable_feature_render() {
$options = get_option('wplist_plugin_options');
?>
<input type="checkbox" name="wplist_plugin_options[enable_feature]" value="1" <?php checked(1, isset($options['enable_feature']) ? $options['enable_feature'] : 0); ?> /> Включено
<?php
}Очистка и валидация данных настроек
Очень важно фильтровать ввод, чтобы избежать ошибок и уязвимостей. В функции sanitize мы проверяем и очищаем данные перед сохранением.
function wplist_sanitize_options($input) {
$sanitized = array();
if (isset($input['api_key'])) {
$sanitized['api_key'] = sanitize_text_field($input['api_key']);
}
$sanitized['enable_feature'] = !empty($input['enable_feature']) ? 1 : 0;
return $sanitized;
}Пример интеграции с плагином Clearfy Pro для управления оптимизацией
Если вы используете плагин Clearfy Pro, можно добавить настройки для управления его функциями через ваш плагин. Например, включать или отключать некоторые оптимизации в зависимости от параметров.
Для этого используйте фильтры и хуки Clearfy Pro внутри вашей функции, реагируя на состояние флага enable_feature.
Резюме и рекомендации
Создание страницы настроек для плагина — ключевой шаг к удобству использования и расширяемости. Используйте стандартный API настроек WordPress, чтобы обеспечить надежность и безопасность. Внимательно валидируйте данные, чтобы избежать ошибок.
Подключайте дополнительные возможности через интеграции с популярными плагинами, такими как Clearfy Pro, чтобы расширить функционал без излишнего кода.
Если нужна готовая платформа для создания и управления плагинами, рассмотрите продукты на WPSHOP.RU.