如何 运行 使用设置 API 提交选项时的附加功能
How to run an additional function when options are submitted with the Settings API
我正在使用设置 API 来存储用户对插件所做的设置。此外,当他或她点击插件页面上的 "Save" 按钮时,我想在 wordpress 中调用另一个 API(generate/update CF7 表单),而不仅仅是调用post 至 'options.php'
遵循使用设置的教程和指南可以保存设置 api。下面附上
- 我定义的一个钩子,我希望在更新选项时调用它
- 钩子中回调函数的定义
- 函数中 HTML 代码的 'form' 标记(从 php 转义)以显示实际的管理页面。
这是代码摘录:
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。我会天真地怀疑这会更新选项 'ordered_fields_in_form' 并因此触发挂钩。
(它确实更新了我可以看到的选项,如果我重新加载插件的设置页面)
我怀疑这可能是完全错误的做法。
好的,问题只是一些语法错误。按照我上面的描述把它留在这里实际上可以完美地按预期工作
添加挂钩的正确行是
add_action('update_option_ordered_fields_in_form','setup_cf7_form',10,3);
我不确定“10,3”参数是否必要,但也许是,因为目标函数有 3 个参数。然而,主要问题是函数名称中缺少 'up' 和挂钩名称中的单词相反(update_option 而不是 option_update),嗯 :-/
我正在使用设置 API 来存储用户对插件所做的设置。此外,当他或她点击插件页面上的 "Save" 按钮时,我想在 wordpress 中调用另一个 API(generate/update CF7 表单),而不仅仅是调用post 至 'options.php'
遵循使用设置的教程和指南可以保存设置 api。下面附上
- 我定义的一个钩子,我希望在更新选项时调用它
- 钩子中回调函数的定义
- 函数中 HTML 代码的 'form' 标记(从 php 转义)以显示实际的管理页面。
这是代码摘录:
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。我会天真地怀疑这会更新选项 'ordered_fields_in_form' 并因此触发挂钩。
(它确实更新了我可以看到的选项,如果我重新加载插件的设置页面)
我怀疑这可能是完全错误的做法。
好的,问题只是一些语法错误。按照我上面的描述把它留在这里实际上可以完美地按预期工作
添加挂钩的正确行是
add_action('update_option_ordered_fields_in_form','setup_cf7_form',10,3);
我不确定“10,3”参数是否必要,但也许是,因为目标函数有 3 个参数。然而,主要问题是函数名称中缺少 'up' 和挂钩名称中的单词相反(update_option 而不是 option_update),嗯 :-/