选项值未保存在数据库中

时间:2021-09-10 作者:Desper

我正在尝试建立一个简单的插件,但这个设置API并没有让我休息一下。

我在设置页面中注册了一个字段,但我们输入的值不会保存到数据库中。

enter image description here

这是迄今为止我整理的代码。非常感谢您的帮助

<?php


if(is_admin()){
    add_action( \'admin_menu\', \'my_plugin_menu\' );
    add_action( \'admin_init\', \'register_mysettings\' );
}

function register_mysettings() { 

    register_setting( \'purchase-history-grid\', \'num_of_columns\' );

    add_settings_section(
        \'plugin_section\',
        __( \'The Grid\', \'wordpress\' ),
        \'settings_section_callback\',
        \'purchase-history-grid\'
    );

    add_settings_field(
        \'num_of_columns\',
        \'Number of Columns\',
        \'show_num_of_cols\',
        \'purchase-history-grid\',
        \'plugin_section\'
    );

  }



function my_plugin_menu() {
    add_options_page( \'Purchase History Grid\', \'Purchase History Grid\', \'manage_options\', \'purchase-history-grid\', \'my_plugin_options\' );
}


function my_plugin_options() {
    if ( !current_user_can( \'manage_options\' ) )  {
        wp_die( __( \'You do not have sufficient permissions to access this page.\' ) );
    }

    ?>
    <div class="wrap">
        <h2>Purchase History Grid by SolutionsW3</h2>
        <form method="post" action="options.php"> 

    <?php

        settings_fields( \'purchase-history-grid\' );
        do_settings_sections( \'purchase-history-grid\' );

        submit_button(); 

    ?>

    </form> 
    </div>

<?php

}

function show_num_of_cols() {

    // get the value of the setting we\'ve registered with register_setting()
    $setting = get_option(\'num_of_cols\');

    // output the field
    ?>
    <input type="text" id="num_of_cols" name="num_of_cols" value="<?php echo isset( $setting ) ? esc_attr( $setting ) : \'\'; ?>">
    <?php
}

function settings_section_callback(  ) {
    echo __( \'Please configure the grid here\', \'wordpress\' );
}

?>

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

选项值未保存在数据库中,因为您可以在下面看到,注册的选项名称为num_of_columnsnot num_of_cols:

// The second parameter is the option name.
register_setting( \'purchase-history-grid\', \'num_of_columns\' );
因此,请确保在设置字段回调中使用正确的选项名称:

使用get_option( \'num_of_columns\' ) 检索保存的选项时,以及

使用name="num_of_columns"<input>

相关推荐

批量操作在单击时重定向到“options.php”页面(WP_LIST_TABLE)

我对WP\\U List\\U表格有问题。我正在学习一个关于互联网的教程(https://wpengineer.com/2426/wp_list_table-a-step-by-step-guide/) 因为我需要在插件页面上显示一个表。问题是批量操作不起作用,我已经尝试使用我刚才提到的链接提供的原始代码,并且我也尝试遵循另一个教程。但是,当我按下批量操作按钮时,wordpress会将我重定向到wp admin/options。php页面,无论我按哪个动作块。我不知道为什么会这样。