复选框不保存在自定义设置页面wordpress中

时间:2014-02-26 14:06:41

标签: php wordpress

重新加载页面时,我的复选框的值不会保存。它会保存值,但在重新加载时不会更新复选框。

目前我正在使用wordpress编解码器中的设置。标签值将在重新加载页面时保存并重新填充,但复选框不会重新加载。这非常简单,但出于某种原因,我无法让它发挥作用。

因此,为了澄清,复选框值已保存,我可以使用它,但复选框不会反映最新选择,即已选中或未选中。它始终是未经检查的。

<?php
// create custom plugin settings menu
add_action('admin_menu', 'baw_create_menu');

function baw_create_menu() {

    //create new top-level menu
    add_menu_page('BAW Plugin Settings', 'BAW Settings', 'administrator', __FILE__, 'baw_settings_page',plugins_url('/images/opd.png', __FILE__));

    //call register settings function
    add_action( 'admin_init', 'register_mysettings' );
}


function register_mysettings() {
    //register our settings
    register_setting( 'baw-settings-group', 'new_option_name' );
    register_setting( 'baw-settings-group', 'some_other_option' );
    register_setting( 'baw-settings-group', 'option_etc' );
    register_setting( 'baw-settings-group', 'option_name' );
}

function baw_settings_page() {
?>
<div class="wrap">
<h2>Your Plugin Name</h2>

<form method="post" action="options.php">
    <?php settings_fields( 'baw-settings-group' ); ?>
    <?php do_settings_sections( 'baw-settings-group' ); ?>
    <table class="form-table">
        <tr valign="top">
        <th scope="row">New Option Name</th>
        <td><input type="text" name="new_option_name" value="<?php echo get_option('new_option_name'); ?>" /></td>
        </tr>

       <input name="option_name" type="checkbox" value="1" <?php checked( '1', get_option( 'option_name' ) ); ?> />

        <tr valign="top">
        <th scope="row">Some Other Option</th>
        <td><input type="text" name="some_other_option" value="<?php echo get_option('some_other_option'); ?>" /></td>
        </tr>

        <tr valign="top">
        <th scope="row">Options, Etc.</th>
        <td><input type="text" name="option_etc" value="<?php echo get_option('option_etc'); ?>" /></td>
        </tr>
    </table>

    <?php submit_button(); ?>

</form>
</div>
<?php } ?>

4 个答案:

答案 0 :(得分:1)

我实际上已经修好了。

这是因为表单在表格中,无论您使用何种方法,都不会在Chrome中检查该框。

答案 1 :(得分:0)

删除已检查函数中的引号。

即..

checked( 1, get_option( 'option_name' ) );

答案 2 :(得分:0)

如果您将选项值存储在变量中并使用变量,该怎么办?

$option_name = get_option( 'option_name' );

<input name="option_name" type="checkbox" value="1" <?php checked( 1,  $option_name); ?> />

答案 3 :(得分:0)

假设get_option( 'option_name' )的值为1。

尝试checked( 1, (int)get_option( 'option_name' ) );

如果它不起作用,请测试checked( 1, (int)get_option( 'option_name' ) ) echos'选中'或仅返回它。

如果这不起作用,我会尝试使用if ( get_option(option_name) == 1 ) echo 'checked="checked"';代替checked函数。

如果这不起作用,那么很可能是一些缓存问题。