web-dev-qa-db-ja.com

カスタムプラグイン管理ページのチェックボックスの競合

私は管理者オプションページでWordPress用のカスタムプラグインを作成しようとしています。

オプションページでは、ユーザーはオプションをチェックできる必要があり、チェックボックスがチェックされている場合、プラグインはHTMLフォームにセクションを追加する必要があります。

私が抱えている問題は、2番目のチェックボックスがデータベース内にその値を格納していないということですので、私はそれをチェックすることができません。宣言コードの順序を変更しても、2番目のチェックボックスだけが機能しません。

私のプラグインオプションはすべてのコンポーネントで動作していることに注意してください、そして私はチェックボックスのみでこの問題を抱えています。

これが私のプラグインのチェックボックス部分です。いくつかの衝突はありますか?何がおかしいのですか?

function set_options() {
    register_setting( 'checkbox-1-settings', 'my_checkbox_1_name' );
    register_setting( 'checkbox-2-settings', 'my_checkbox_2_name' );
}

function admin_page(){
    ?>
    <form method="post" action="options.php">
      <?php settings_fields( 'checkbox-1-settings' ); ?>
      <?php settings_fields( 'checkbox-2-settings' ); ?>
      <?php do_settings_sections( 'checkbox-1-settings' ); ?>
      <?php do_settings_sections( 'checkbox-2-settings' ); ?>
      <table class="form-table">
        <tr valign="top">
          <th scope="row">Option 1</th>
          <td><input type='checkbox' name='my_checkbox_1_name' <?php checked( get_option('my_checkbox_1_name'), 1 ); ?> value='1'></td>
        </tr>
        <tr valign="top">
          <th scope="row">Option 2:</th>
          <td><input type='checkbox' name='my_checkbox_2_name' <?php checked( get_option('my_checkbox_2_name'), 1 ); ?> value='1'></td>
        </tr>
      </table>
      <?php submit_button(); ?>
    </form>
    <?php
}

function my_plugin() {

  $html = '<form>
  if (get_option('my_checkbox_1_name')) {
    $html .= '<select name="select1" id="test1">
        <option selected disabled>select1</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
      </select>';
  }
  else if (get_option('my_checkbox_2_name')) {
    $html .= '<select name="select2" id="test2">
        <option selected disabled>select2</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
      </select>';
  }
  return $html . '<input type="submit" value="Go!"></form>' . $content;
}
1
Css14

フィールドを設定するために2つの別々の設定グループを登録しています。問題はここにあるかもしれません。

 function set_options() {
    register_setting( 'checkbox-1-settings', 'my_checkbox_1_name' );
    register_setting( 'checkbox-2-settings', 'my_checkbox_2_name' );
}

そのため、両方のフィールドに1つの設定グループのみを使用して、機能するかどうかを確認してください。

function set_options() {
    register_setting( 'checkbox-settings', 'my_checkbox_1_name' );
    register_setting( 'checkbox-settings', 'my_checkbox_2_name' );
}

更新

設定APIを取得して配列に格納します。

$options = (array) get_option( 'plugin_options' );

$ optionsは、すべてのフィールドのサブフィールドを含む配列です。そして、この配列にそのキーを渡すだけで、任意のキーの値を取得できます。

例えばcheck_2の値を取得するために

$check_two = $options['check_2'];
0
Anwer AR