Вопрос или проблема
Я работаю над плагином WP и у меня есть настройки на созданной странице меню. Когда я сохраняю страницу, мои настройки сохраняются без каких-либо проблем, но я не возвращаюсь на страницу настроек, а на страницу, где можно увидеть все настройки, существующие в WordPress.
Как мне вернуть пользователя на мою собственную страницу настроек?
Я отправляю данные на options.php
, как описано в документации помощи.
Используйте API настроек или подключите функцию к admin_init, которая проверяет разрешения и nonce, сохраняет обновленные значения и перенаправляет на вашу страницу настроек.
.
Ответ или решение
Чтобы вернуть пользователя на свою страницу настроек после сохранения в вашем плагине для WordPress, вам необходимо реализовать перенаправление после успешного сохранения настроек. Вы правильно упомянули, что используете функцию options.php
для обработки сохранения, что является стандартным методом в WordPress. Однако, если вы не хотите, чтобы пользователь после сохранения оказался на странице всех настроек WordPress, вам нужно явно указать, куда его перенаправить.
Шаги для достижения цели
-
Используйте
admin_init
для обработки сохранения настроек:
Вам необходимо зарегистрировать функцию, которая будет обрабатывать сохранение настроек. Это можно сделать с помощью хукаadmin_init
. Во время этого процесса вы проверяете, есть ли необходимый токен безопасности (nonce), и если все в порядке, сохраняете настройки. -
Добавьте перенаправление:
Ваша функция сохранения настроек должна включать механизм перенаправления на страницу настроек после успешного сохранения. Для этого используйте функциюwp_redirect()
иexit()
для завершения выполнения скрипта.
Пример кода
Далее приведен пример того, как можно реализовать данный процесс в вашем плагине.
// Добавляем меню
add_action('admin_menu', 'my_plugin_menu');
function my_plugin_menu() {
add_menu_page('Мои настройки', 'Настройки плагина', 'manage_options', 'my-plugin-settings', 'my_plugin_settings_page');
}
// Страница настроек
function my_plugin_settings_page() {
?>
<div class="wrap">
<h1>Настройки плагина</h1>
<form method="post" action="options.php">
<?php
settings_fields('my_plugin_options_group');
do_settings_sections('my-plugin-settings');
submit_button();
?>
</form>
</div>
<?php
}
// Обработка сохранения настроек
add_action('admin_init', 'my_plugin_settings_save');
function my_plugin_settings_save() {
if (isset($_POST['submit'])) {
// Проверка nonce
check_admin_referer('my_plugin_options_group');
// Сохранение настроек
update_option('my_plugin_option_name', sanitize_text_field($_POST['my_plugin_option_name']));
// Перенаправление
wp_redirect(admin_url('admin.php?page=my-plugin-settings&status=success'));
exit;
}
}
// Регистрация настроек
add_action('admin_init', 'my_plugin_register_settings');
function my_plugin_register_settings() {
register_setting('my_plugin_options_group', 'my_plugin_option_name');
}
Объяснение:
- Функция
my_plugin_menu()
: Создает пункт меню для вашего плагина в админке WordPress. - Функция
my_plugin_settings_page()
: Выводит HTML-форму для настроек вашего плагина. - Функция
my_plugin_settings_save()
: Обрабатывает данные, которые отправлены через форму. Она проверяет безопасность (nonce), сохраняет настройки и затем перенаправляет пользователя обратно на страницу ваших настроек с параметромstatus=success
, чтобы вы могли отображать сообщение об успешном сохранении, если это необходимо. - Регистрация настроек: В функции
my_plugin_register_settings()
вы регистрируете ваши настройки, которые WordPress будет обрабатывать.
Заключение
С помощью этого подхода вы сможете обеспечить плавный пользовательский опыт, сохраняя настройки плагина и перенаправляя пользователей обратно на вашу страницу настроек. Это повысит удобство работы с вашим плагином и минимизирует путаницу для пользователей.