5

作成したプラグイン ページのチェックボックス フィールドがチェックされたままになりません。データは保存されていますが、チェックボックスには現在保存されている値が反映されていません (チェックされています)。

ここに私の関数コードがあります:

public function jo_checkbox_del_setting()
{
    echo "<input id='jo_checkbox_del' name='jo_plugin_options[jo_checkbox_del]' type='checkbox' value='{$this->options['jo_checkbox_del']}' />";
}

そしてadd_settings_fieldコード:

add_settings_field('jo_checkbox_del', 'Hide Delete Button: ', array($this, 'jo_checkbox_del_setting'), __FILE__, 'jo_main_section');

ここに画像の説明を入力

写真でわかるように、値は 1 であり、チェックされていますが、更新後にチェックボックスがチェックされたままになることはありません。

4

4 に答える 4

2

checked代わりに、checkbox タグの属性を使用してください。

public function jo_checkbox_del_setting()
{
    $checked = ( (int)$this->options['jo_checkbox_del'] == 1 ) ? 'checked' : '';
    echo "<input id='jo_checkbox_del' name='jo_plugin_options[jo_checkbox_del]' type='checkbox' value='{$this->options['jo_checkbox_del']}' $checked />";
}

これは、チェックボックスを事前に選択する唯一の方法です。値を保存された値に設定しても、自動的に設定されることはありません。

また、デフォルトでは、フォームのチェックボックスは、チェックされていない限り送信されないことに注意してください。

于 2013-09-07T16:29:50.103 に答える
0

チェックボックスがオンになっていることを確認し、それについてページの HTML 部分に「伝える」必要があります。

そこで、 isかかをチェックする関数echo is_checkbox_checked() ? "checked" : "";where isを追加することをお勧めします。is_checkbox_checked()[jo_checkbox_del]truefalse

最終的なコードは次のようになります。

<?php
public function jo_checkbox_del_setting()
{ ?>
<input id='jo_checkbox_del' name='<?php echo jo_plugin_options[jo_checkbox_del]; ?>' type='checkbox' value='<?php echo {$this->options['jo_checkbox_del']}; ?>' <?php echo is_checkbox_checked() ? "checked" : ""; ?> />";
<?php } ?>
于 2013-09-07T16:32:22.520 に答える