wordpress form not saving or updating

by Art Empire   Last Updated June 12, 2019 22:08 PM

i have been looking for a bug in my plugin am working on for days now and i haven't gotten any explanation that can solve my problem. the objective of the plugin is to save an array of options to the database using the update_option. unfortunately when the submit button is clicked, it refreshes to the same page and nothing happens or saves to options table in WordPress. no error either, although, i noticed the message notifiers is also not called either when i click reset or submit. i am hoping someone can point out what i am missing or not doing right,am fairly new to WordPress development.

code:

global $pluginmename, $shortname, $options;
$pluginmename = "Fego-edu CPanel";
$shortname = "fcp";
/**
 * options array. subdivided into sections
 *
 * @since   1.0.0
 * 
 * 
 */ 
$options = array (

    array( "name" => $themename." Options",
        "type" => "title"),


    array( "name" => "General",
        "type" => "section"),
    array( "type" => "open"),

    array( "name" => "Colour Scheme",
        "desc" => "Select the colour scheme for the theme",
        "id" => $shortname."_color_scheme",
        "type" => "select",
        "options" => array("blue", "red", "green"),
        "std" => "blue"),

    array( "name" => "Logo URL",
        "desc" => "Enter the link to your logo image",
        "id" => $shortname."_logo",
        "type" => "text",
        "std" => ""),


    array( "name" => "Custom CSS",
        "desc" => "Want to add any custom CSS code? Put in here, and the    rest is taken care of. This overrides any other stylesheets. eg: 
a.button{color:green}",
        "id" => $shortname."_custom_css",
        "type" => "textarea",
        "std" => ""),        

    array( "type" => "close"),
    array( "name" => "Homepage",
        "type" => "section"),
    array( "type" => "open"),

    array( "name" => "Homepage header image",
        "desc" => "Enter the link to an image used for the homepage 
header.",
        "id" => $shortname."_header_img",
        "type" => "text",
        "std" => ""),

    array( "name" => "Homepage featured category",
        "desc" => "Choose a category from which featured posts are drawn",
        "id" => $shortname."_feat_cat",
        "type" => "select",
        "options" => $wp_cats,
        "std" => "Choose a category"),


    array( "type" => "close"),
    array( "name" => "Footer",
        "type" => "section"),
    array( "type" => "open"),

    array( "name" => "Footer copyright text",
        "desc" => "Enter text used in the right side of the footer. It can 
be HTML",
        "id" => $shortname."_footer_text",
        "type" => "text",
        "std" => ""),

    array( "name" => "Google Analytics Code",
        "desc" => "You can paste your Google Analytics or other tracking 
code in this box. This will be automatically added to the footer.",
        "id" => $shortname."_ga_code",
        "type" => "textarea",
        "std" => ""),    

    array( "name" => "Custom Favicon",
        "desc" => "A favicon is a 16x16 pixel icon that represents your 
site; paste the URL to a .ico image that you want to use as the image",
        "id" => $shortname."_favicon",
        "type" => "text",
        "std" => get_bloginfo('url') ."/favicon.ico"),   

    array( "name" => "Feedburner URL",
        "desc" => "Feedburner is a Google service that takes care of your RSS feed. Paste your Feedburner URL here to let readers see it in your 
website",
        "id" => $shortname."_feedburner",
        "type" => "text",
        "std" => get_bloginfo('rss2_url')),


    array( "type" => "close")

    );
/**
 * Save and reset data settings to database.
 * options for testing. to be changed to usermeta
 *
 * @since   1.0.0
 * 
 * 
 */ 
if ( $_GET['page'] == basename(__FILE__)) {

    if ( 'save' == $_REQUEST['action1'] ) {

        foreach ($options as $value) {
        update_option( $value['id'], $_REQUEST[ $value['id'] ] ); }

        foreach ($options as $value) {
            if( isset( $_REQUEST[ $value['id'] ] ) ) { 
                update_option( $value['id'], 
                $_REQUEST[ $value['id'] ]  ); 
            } 
            else { 
                delete_option( $value['id'] ); 
            } 
        }

header("Location: http://localhost/fego/wp-admin/admin.php?page=fego-edu&action=edit_data&user_id='.$user->ID.'&saved=true");
            //header("Location: admin.php&saved=true");

        die;
    } 
else if( 'reset' == $_REQUEST['action1'] ) {

        foreach ($options as $value) {
            delete_option( $value['id'] ); }

header("Location: http://localhost/fego/wp-admin/admin.php?page=fego-edu&action=edit_data&user_id='.$user->ID.'&reset=true");
        die;    
    }   

}

function wpdocs_theme_name_scripts() {
wp_enqueue_style( 'fego-edu-admin', get_stylesheet_uri() );
wp_enqueue_script( 'fego-edu-admin', get_template_directory_uri() . 
'/js/fego-edu-admin.js', array(), '1.0.0', true );
}

/**
 * Html buildup based of off options array
 *
 *
 * @since   1.0.0
 * 
 * 
 */
if( current_user_can('edit_users' ) ) { ?>
<h2> <?php echo __('Dashboard Information for ' . '( Fullname: '.$user- 
>display_name . '), ( Username: ' . $user->user_login . ')', $this-    >plugin_text_domain ); ?> </h2>
    <br>
     <!--   Main section   -->
    <?php 
    $i=0;
    if ( $_REQUEST['saved'] ) echo '<div id="message" class="updated fade"> 
<p><strong>'
    .$pluginmename.' settings saved.</strong></p></div>';
    if ( $_REQUEST['reset'] ) echo '<div id="message" class="updated fade"> 
<p><strong>'
    .$pluginmename.' settings reset.</strong></p></div>';
    ?>
    <div class="wrap rm_wrap">
    <h2><?php echo $pluginmename; ?> Settings</h2>

    <div class="rm_opts">
        <form method="post">
        <?php foreach ($options as $value) {
        switch ( $value['type'] ) {
        case "open":
        ?>
        <?php break;
        case "close":
        ?>
        </div>
        </div>
        <br />
        <?php break;
        case "title":
        ?>
        <p>To easily use the <?php echo $pluginmename;?> theme, you can use 
the menu below.</p>
        <?php break;
        case 'text':
        ?>
        <div class="rm_input rm_text">
            <label for="<?php echo $value['id']; ?>"><?php echo 
 $value['name']; ?></label>
            <input name="<?php echo $value['id']; ?>" id="<?php echo 
$value['id']; ?>" 
            type="<?php echo $value['type']; ?>" 
            value="<?php if ( get_settings( $value['id'] ) != "") 
            { echo stripslashes(get_settings( $value['id'])  ); } 
            else { echo $value['std']; } ?>" />
        <small><?php echo $value['desc']; ?></small><div class="clearfix"> 
</div>

        </div>
        <?php
        break;

        case 'textarea':
        ?>

        <div class="rm_input rm_textarea">
            <label for="<?php echo $value['id']; ?>"><?php echo 
$value['name']; ?></label>
            <textarea name="<?php echo $value['id']; ?>" type="<?php echo 
$value['type']; ?>" cols="" rows=""><?php if ( get_settings( $value['id'] ) 
!= "") { echo stripslashes(get_settings( $value['id']) ); } else { echo 
$value['std']; } ?></textarea>
        <small><?php echo $value['desc']; ?></small><div class="clearfix"> 
</div>

        </div>

        <?php
        break;

        case 'select':
        ?>
        <div class="rm_input rm_select">
            <label for="<?php echo $value['id']; ?>"><?php echo 
$value['name']; ?></label>

        <select name="<?php echo $value['id']; ?>" id="<?php echo 
$value['id']; ?>">
        <?php foreach ($value['options'] as $option) { ?>
                <option <?php if (get_settings( $value['id'] ) == $option) { 
echo 'selected="selected"'; } ?>><?php echo $option; ?></option><?php } ?>
        </select>

            <small><?php echo $value['desc']; ?></small><div 
class="clearfix"></div>
        </div>
        <?php
        break;

        case "checkbox":
        ?>

        <div class="rm_input rm_checkbox">
            <label for="<?php echo $value['id']; ?>"><?php echo 
$value['name']; ?></label>

        <?php if(get_option($value['id'])){ $checked = 
"checked=\"checked\""; }else{ $checked = "";} ?>
        <input type="checkbox" name="<?php echo $value['id']; ?>" id="<?php 
echo $value['id']; ?>" value="true" <?php echo $checked; ?> />


            <small><?php echo $value['desc']; ?></small><div 
class="clearfix"></div>
        </div>
        <?php break;
        case "section":

        $i++;

        ?>

        <div class="rm_section">
        <div class="rm_title">
            <h3>
            <img src="<?php 
            bloginfo('template_directory')?>/functions/images/trans.gif" 
            class="inactive" alt="""><?php echo $value['name']; ?>
            </h3><span class="submit"><input name="save<?php echo $i; ?>" 
type="submit" 
            value="Save progress" />
            </span><div class="clearfix"></div></div>
        <div class="rm_options">


        <?php break;

        }
        }
        ?>

    <input type="hidden" name="action1" value="save" />
    </form>
    <form method="post">
    <p class="submit">
    <input name="reset" type="submit" value="Reset all" />
    <input type="hidden" name="action1" value="reset" />
    </p>
    </form>

    <!--    Back Button   -->
    <a href="<?php echo esc_url( add_query_arg( array( 'page' => wp_unslash( $_REQUEST['page'] ) ) ,
     admin_url( 'admin.php' ) ) ); ?>"><?php _e( 'Back', $this->plugin_text_domain ) ?></a>
<?php
}
else {  
?>
    <p> <?php echo __( 'You are not authorized to perform this operation.', 
$this->plugin_text_domain ) ?> </p>
<?php   
}
add_action( 'admin_enqueue_scripts', 'wpdocs_theme_name_scripts' );
//add_action('admin_init', 'save_options');


Related Questions


Updated September 30, 2018 14:08 PM

Updated September 01, 2017 17:08 PM

Updated September 24, 2016 09:03 AM

Updated August 09, 2017 06:08 AM

Updated May 25, 2018 19:08 PM