Как запустить дополнительную функцию при отправке параметров с помощью API настроек

Я использую API настроек для хранения настроек, которые пользователь делает для плагина. Вдобавок, когда он или она нажимает кнопку «Сохранить» на странице плагина, я хочу сделать несколько вызовов другого API в wordpress (сгенерировать / обновить форму CF7), а не просто разместить сообщение в 'options.php'

Сохранение настроек работает, следуя руководствам и рекомендациям по использованию настроек api. Ниже прилагается

  • крючок, который я определил, который, как я ожидаю, будет вызван при обновлении параметра
  • определение функции обратного вызова в хуке
  • тег 'form' (экранированный из php) HTML-кода в функции для отображения фактической страницы администратора.

Это фрагменты кода:

add_action('option_update_ordered_fields_in_form','set_cf7_form');
.....
function setup_cf7_form($oldval,$newval,$option) {
...
}
....
function stpz_settings_page() {
....?>....
  <form method = "post" action = "options.php">
     <?php settings_fields( 'form_my_settings' ); ?>
     <?php do_settings_sections( 'form_my_settings' ); ?>
     <tr>
     <td><input id = "result" type = "hidden" name = "ordered_fields_in_form" value = "
          <?php echo esc_attr( get_option('ordered_fields_in_form') ); ?>" /></td>
     <td><?php submit_button(); ?></td>
     </tr>
  </form>
.....
<?php 
}
?>

кажется, что функция setup_cf7_form вообще не вызывается при нажатии кнопки отправки. Я бы наивно подозревал, что это приведет к обновлению опции 'order_fields_in_form' и, следовательно, вызовет ловушку.

(он действительно обновляет параметр, который я могу увидеть, если перезагружу страницу настроек для плагина)

Я подозреваю, что это может быть совершенно неправильный способ сделать это.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Правильная линия для добавления крючка:

add_action('update_option_ordered_fields_in_form','setup_cf7_form',10,3);

Я не уверен, нужны ли аргументы «10, 3», но, возможно, они нужны, поскольку целевая функция принимает 3 аргумента. Однако основной проблемой было отсутствие слова «вверх» в имени функции и преобразованные в слова в имени ловушки (update_option вместо option_update), ну: - /

Другие вопросы по теме