【问题标题】:Custom Wordpress Plugin Not Saving Settings自定义 Wordpress 插件不保存设置
【发布时间】:2022-08-10 00:44:05
【问题描述】:

我正在开发我的第一个自定义 WP 插件,并且正在尝试使用 Settings API 注册设置。我已经遵循了许多指南,并且我已经成功地创建了一个管理菜单页面,其中包含在插件中定义的部分和字段,但是单个设置(在代码中它的 fbm_lockout_updates)不会保存,并且没有数据库中的表已为其创建。 在尝试了十几件事之后,我不确定自己哪里出错了。以下是为简洁而编辑的相关代码:

/* Create Menu */
add_action( \'admin_menu\', \'fbm_config_menu\' );
function fbm_config_menu() {    
    $page_title = \'Sample Plugin\';   
    $menu_title = \'Sample Plugin Config\';   
    $capability = \'manage_options\';   
    $menu_slug  = \'fbm_config\';   
    $function   = \'fbm_config_page\';
add_menu_page( 
        $page_title,                  
        $menu_title,                   
        $capability,                   
        $menu_slug,                   
        $function
    ); 
}

/* Register Settings and Fields */

function fbm_register_settings() {
        
    register_setting( \'fbm_config\', \'fbm_lockout_updates\');
        
    add_settings_section(
        \'fbm_restriction_section\',
        \'Development Restrictions\',
        \'fbm_restriction_callback\',
        \'fbm_config\'
    );
        
    add_settings_field(
        \'fbm_lockout_updates_field\',
        \'Lockout Updates\',
        \'fbm_lockout_field_callback\',
        \'fbm_config\',
        \'fbm_restriction_section\'
    );
        
}

add_action( \'admin_init\', \'fbm_register_settings\' );


/* Settings Callbacks */

function fbm_restriction_callback() {
    ?>
    <p><?php esc_html_e( \'Description of Setting Section\', \'fbm_config\' ); ?></p>
    <?php
}

function fbm_lockout_field_callback() {
    $setting = get_option(\'fbm_lockout_updates\');
    ?>
    <input type=\"checkbox\" name=\"fbm_lockout_updates\" value=\"0\" <?php checked(\'1\', $setting); ?> >
    <?php
}

/* Load Admin Page */

function fbm_config_page(){ 
        
        if ( isset( $_GET[\'settings-updated\'] ) ) {
            add_settings_error( \'fbm_con_messages\', \'fbm_con_message\', __( \'Settings Saved\', \'fbm_config\' ), \'updated\' );
        }
        settings_errors( \'fbm_con_messages\' );
        ?>

        <div class=\"wrap\">
            <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>

            <form method=\"post\" action=\"options.php\">
                <?php 
                    settings_fields( \'fbm_config\' );
                    do_settings_sections( \'fbm_config\' );
                    submit_button( \'Save Settings\' );
                ?>
            </form>
        <div>
<?php }  

?>

    标签: php wordpress wordpress-plugin-creation


    【解决方案1】:

    在这种情况下, register_setting 会将您的数据保存在 wp-options 表中,请查看它。

    如果您希望您的设置显示在 wordpress api 中,建议您同时使用 admin 和 api hook

    add_action( 'rest_api_init', 'bm_register_settings' );
    add_action( 'admin_init', 'fbm_register_settings' );
    

    【讨论】:

      猜你喜欢
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多