2

我正在创建一个自定义插件并有一个选项页面。当我单击保存按钮时,我的变量正在保存,但我想添加第二个按钮并检测按下了哪个按钮。我一直在尝试将名称放在按钮中,并希望通过 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>';
}
4

1 回答 1

2

以防万一您仍在寻找答案。此外,以供将来参考,以便我在丢失时可以找到它......这是我所做的,它似乎工作正常。

当你使用 register_setting('group', 'setting') 确保使用第三个参数并定义一个回调函数。在回调中,您将能够访问提交的选项,还可以访问 $_POST 变量。$_POST['submit'] 是你要找的那个。

在实践中....

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;
}

我希望这对其他人有帮助。我多年来一直在寻找答案,然后开始尝试。

  • RK
于 2014-01-23T10:34:31.120 回答