私は管理者オプションページで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;
}
フィールドを設定するために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'];