2

カスタム プラグインを作成していて、オプション ページがあります。保存ボタンをクリックすると変数が保存されますが、2 つ目のボタンを追加して、どのボタンが押されたかを検出したいと考えています。ボタンに名前を入れようとしていて、 isset $_POST['name'] {} で名前を検出したいと思っていましたが、保存または他のボタンをクリックすると、変数が保存されましたが、入れられませんでしたPOST 変数内のすべて。コードでわかるように、1 つのボタンはフォームから変数を保存し、もう 1 つのボタンはそれらの変数を使用してスクリプトを保存して実行します。問題は、リロード後にどのボタンがクリックされたかをページに知らせる必要があることです。どのボタンが一番下でクリックされたかを識別しようとしていることがわかります。私は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') を使用する場合は、必ず 3 番目のパラメーターを使用し、コールバック関数を定義してください。コールバックでは、送信されたオプションだけでなく、$_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 に答える