我正在创建一个自定义插件并有一个选项页面。单击保存按钮时,我的变量正在保存,但我想添加第二个按钮并检测按下了哪个按钮。我一直试图在按钮中放置名称并希望通过isset $ _POST ['name'] {}检测它们,但是当我单击保存或其他按钮时,它只是保存了我的变量,但是没有放POST变量中的任何内容。正如您在代码中看到的,一个按钮保存表单中的变量,另一个按钮保存并使用这些变量运行某些脚本。问题是我需要页面知道重新加载后点击了什么按钮,你可以看到我试图辨别最底部点击了哪个按钮。 我更喜欢php解决方案,所以我可以逐步增强。谢谢!
<div class="wrap">
<h2>Config Me Bro</h2>
<form method="post" action="options.php">
<?php settings_fields('aug_options'); ?>
<?php $options = get_option('data_value'); ?>
<label for="">Checkbox</label>
<input name="data_value[option1]" type="checkbox" value="1" id="" <?php checked('1', $options['option1']); ?> />
<label for="general_title">Title</label>
<input type="text" name="data_value[sometext]" id="general_title" value="<?php echo $options['sometext']; ?>" />
<p class="submit">
<?php submit_button('Save Changes', 'primary', 'save_config', false); ?>
<?php submit_button('Run Config', 'secondary', 'run_config', false); ?>
</p>
</form>
</div>
<pre> <?php print_r($_POST);?></pre>
<?php
}
/* Run Config Settings */
if (isset($_POST['run_config'])){
echo '<h1>I am running</h1>';
}
/* Save config Settings */
elseif (isset($_POST['save_config'])){
echo '<h1>Saved it</h1>';
}
答案 0 :(得分:2)
以防您仍在寻找答案。此外,为了将来参考,以便我可以找到它,如果永远丢失...这是我已经做了,它似乎工作正常。
当您使用register_setting('group','setting')时,请确保使用第3个参数并定义回调函数。在回调中,您将能够访问提交的选项,还可以访问$ _POST变量。 $ _POST ['submit']是您正在寻找的。 p>
在实践中......
register_settings('my_plugin_settings_group', 'my_plugin_settings', 'my_plugin_settings_callback');
function my_plugin_settings_callback( $posted_options ) {
// $_POST['submit'] contains the value of your submit button
if( $_POST['submit'] == 'Run Config' ) {
// your code here
}
// $posted_options is an array with all the values submitted so you have to return it.
return $posted_options;
}
我希望这有助于其他人。我一直在寻找答案,然后开始尝试。