добавить функцию для отправки options.php

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

У меня есть форма, которая делает

<form method="post" action="options.php">
.........
<input type="submit" class="button-primary" value="<?php _e( 'Сохранить изменения', 'bsp_style_settings' ); ?>" />

У меня есть все настройки регистрации/admin_init и т.д., и всё работает хорошо, данные сохраняются в части WP_Options базы данных – отлично!

Все, что я хочу сделать, это добавить дополнительную функцию, которая также будет выполняться при отправке. Так просто вызов, чтобы сказать

function also_do () {
xxxx
}

так что эта функция также выполняется, когда нажата кнопка “Сохранить”.

Есть ли предложения по решению этой задачи?

Вы можете просто проверить, обновлены ли настройки, и вызвать функцию.

В верхней части страницы, которая отображает форму настроек:

if ( isset( $_GET['settings-updated'] ) && $_GET['settings_updated'] == true ) {
    your_custom_function();
}

Затем определите пользовательскую функцию в вашем functions.php или добавьте её в класс.

Вы можете использовать хуки updated_option.

Из документации:

do_action( 'updated_option', string $option, mixed $old_value, mixed $value )

Срабатывает после того, как значение параметра было успешно обновлено.

Существует также хук update_option, который срабатывает перед обновлением параметра.

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

Чтобы добавить дополнительную функцию, которая будет выполняться при отправке формы options.php в WordPress, можно использовать несколько методов. Ниже приведен детальный процесс реализации этого функционала, который гарантированно будет работать корректно.

1. Использование параметра settings-updated

Первым шагом, который можно предпринять, является проверка наличия параметра settings-updated, который WordPress добавляет к URL после успешного сохранения настроек. Это позволит вам вызывать вашу дополнительную функцию сразу после обновления настроек.

Шаги:

  • Откройте файл, который генерирует вашу форму настроек (обычно это admin_settings_page.php в вашем плагине или теме).
  • В начале файла, где отображается такая форма, добавьте условие для проверки:
if ( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] == true ) {
    also_do(); // Вызываем вашу функцию
}
  • Определите функцию also_do в вашем файле:
function also_do() {
    // Ваш код здесь
}

2. Использование хуков updated_option

Еще одним подходом является использование хука updated_option, который WordPress предоставляет для выполнения кода сразу после успешного обновления значения опции в базе данных.

Шаги:

  • Также в вашем файле настроек добавьте следующий код:
add_action('updated_option', 'your_custom_function', 10, 3);
  • Определите функцию your_custom_function, которая будет выполняться каждый раз, когда обновляется опция:
function your_custom_function($option, $old_value, $new_value) {
    if ($option == 'ваша_опция') { // Замените на ту опцию, которую вы обновляете
        also_do(); // Вызываем дополнительную функцию
    }
}
  • Запишите вашу дополнительную функцию also_do, как упоминалось ранее.

3. Итоги и преимущества

Выбранный вами метод зависит от контекста вашего проекта и конкретных требований:

  • Использование параметра settings-updated — это простой и прямолинейный способ, который хорошо работает в большинстве случаев.
  • Хук updated_option предоставляет большую гибкость и может быть использован для выполнения кода в ответ на изменение любых опций, а не только тех, что связаны с вашей конкретной формой.

Заключение

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

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

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