Как запустить дополнительную функцию, когда параметры передаются с помощью API настроек - PullRequest
0 голосов
/ 04 января 2019

Я использую 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 и, следовательно, вызовет ловушку

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

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

1 Ответ

0 голосов
/ 04 января 2019

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

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

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

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

...