Добавить_меню_страница и сохранить настройки

Вопрос или проблема

Я работаю над плагином WP и у меня есть настройки на созданной странице меню. Когда я сохраняю страницу, мои настройки сохраняются без каких-либо проблем, но я не возвращаюсь на страницу настроек, а на страницу, где можно увидеть все настройки, существующие в WordPress.

Как мне вернуть пользователя на мою собственную страницу настроек?

Я отправляю данные на options.php, как описано в документации помощи.

Используйте API настроек или подключите функцию к admin_init, которая проверяет разрешения и nonce, сохраняет обновленные значения и перенаправляет на вашу страницу настроек.

.

Ответ или решение

Чтобы вернуть пользователя на свою страницу настроек после сохранения в вашем плагине для WordPress, вам необходимо реализовать перенаправление после успешного сохранения настроек. Вы правильно упомянули, что используете функцию options.php для обработки сохранения, что является стандартным методом в WordPress. Однако, если вы не хотите, чтобы пользователь после сохранения оказался на странице всех настроек WordPress, вам нужно явно указать, куда его перенаправить.

Шаги для достижения цели

  1. Используйте admin_init для обработки сохранения настроек:
    Вам необходимо зарегистрировать функцию, которая будет обрабатывать сохранение настроек. Это можно сделать с помощью хука admin_init. Во время этого процесса вы проверяете, есть ли необходимый токен безопасности (nonce), и если все в порядке, сохраняете настройки.

  2. Добавьте перенаправление:
    Ваша функция сохранения настроек должна включать механизм перенаправления на страницу настроек после успешного сохранения. Для этого используйте функцию 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');
}

Объяснение:

  1. Функция my_plugin_menu(): Создает пункт меню для вашего плагина в админке WordPress.
  2. Функция my_plugin_settings_page(): Выводит HTML-форму для настроек вашего плагина.
  3. Функция my_plugin_settings_save(): Обрабатывает данные, которые отправлены через форму. Она проверяет безопасность (nonce), сохраняет настройки и затем перенаправляет пользователя обратно на страницу ваших настроек с параметром status=success, чтобы вы могли отображать сообщение об успешном сохранении, если это необходимо.
  4. Регистрация настроек: В функции my_plugin_register_settings() вы регистрируете ваши настройки, которые WordPress будет обрабатывать.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...