我的复选框没有保存它的价值

时间:2011-03-30 作者:Mild Fuzz

在管理区域中处理以下表单,但数据库不断返回信息所在的空单元格。帮助

<form action="options.php" method="post">

            <input type="hidden" value="admin_bar" name="option_page"><input type="hidden" value="update" name="action"><input type="hidden" value="fd5754f034" name="_wpnonce" id="_wpnonce"><input type="hidden" value="/accessibilitysite/wp-admin/options-general.php?page=admin_bar&amp;settings-updated=true" name="_wp_http_referer">


            <table class="form-table">


        <tbody><tr valign="top"><th scope="row">Admin Toggle</th>
                                <td><input type="checkbox" value="admin_bar_toggle" name="admin_bar_[admin_bar_toggle]"><p>Turn Admin Bar On ?</p></td>

        </tr>   

            </tbody></table>

            <p class="submit">

            <input type="submit" value="Save Changes" class="button-primary">

            </p>

        </form>

1 个回复
最合适的回答,由SO网友:Andy 整理而成

options.php 不会自动将您发布到数据库中的任何内容保存到数据库中。您还必须告诉页面应该在发布的数据中查找哪些选项。

我看到你已经option_pageadmin_bar, 这是解决方案的一半。另一半是将选项名称添加到白名单中。您正在使用表单元素名称admin_bar_[admin_bar_toggle] 将显示为$_POST[\'admin_bar_\'][\'admin_bar_toggle\'] 提交表单时选中该框。此筛选器应显示options.php 要保存此选项:

function admin_page_whitelist_options( $whitelist_options ) {
    $whitelist_options[\'admin_bar\'] = array( \'admin_bar_\' );
    return $whitelist_options;
}
add_filter( \'whitelist_options\', \'admin_page_whitelist_options\' );
之后,您应该在名为admin_bar_.

结束