settings page redirects to options.php on save attempt

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
jonabajona107
Forum Newbie
Posts: 1
Joined: Sat Sep 13, 2014 8:42 am

settings page redirects to options.php on save attempt

Post by jonabajona107 »

I am writing the code for my options page in my wordpress theme. It was working for awhile and the next time i checked, it couldnt save. When i hit save, it redirects to options.php. When i remove the code for the social options it still doesnt work and yet it was working before i included that code. What could be the problem
here is the code

Code: Select all

<?php
/**
 * This function introduces a single theme menu option into the WordPress 'Appearance'
 * menu.
 */
 

 
 
function blueray_theme_menu() {
 
    add_theme_page(
        'Blue Ray Theme',            // The title to be displayed in the browser window for this page.
        'Blue Ray Theme',            // The text to be displayed for this menu item
        'administrator',            // Which type of users can see this menu item
        'blueray_theme_menu',    // The unique ID - that is, the slug - for this menu item
        'blueray_theme_renderpage'     // The name of the function to call when rendering the page for this menu
    );
 
} // end blueray_theme_menu
add_action('admin_menu', 'blueray_theme_menu');
 
/**
 * Renders a simple page to display for the theme menu defined above.
 */
function blueray_theme_renderpage() {
 
    ?>
    <!-- Create a header in the default WordPress 'wrap' container -->
    <div class="wrap">
 
        <!-- Add the icon to the page -->
        <div id="icon-themes" class="icon32"></div>
        <h2>Blue Ray Theme Options</h2>
 
        <!-- Make a call to the WordPress function for rendering errors when settings are saved. -->
        <?php settings_errors(); ?>
        
<?php $active_tab = isset( $_GET[ 'tab' ] ) ? $_GET[ 'tab' ] : 'display_options';?>
 
<h2 class="nav-tab-wrapper">
    <a href="" class="nav-tab <?php echo $active_tab == 'display_options' ? 'nav-tab-active' : ''; ?>">Display Options</a>
    <a href="" class="nav-tab <?php echo $active_tab == 'social_options' ? 'nav-tab-active' : ''; ?>">Social Options</a>
</h2>


        <!-- Create the form that will be used to render our options -->
       <form method="post" action="options.php">
    <?php
         
        if( $active_tab == 'display_options' ) {
            settings_fields( 'blueray_theme_display_options_page' );
            do_settings_sections( 'blueray_theme_display_options_page' );
        } else {
            settings_fields( 'blueray_theme_social_options_page' );
            do_settings_sections( 'blueray_theme_social_options_page' );
        } // end if/else
         
        submit_button();
         
    ?>
</form>
 
    </div><!-- /.wrap -->
    <?php
     
} // end blueray_theme_renderpage



function blueray_initialize_theme_options() {
	
	if( false == get_option( 'blueray_theme_display_options' ) ) { 
    add_option( 'blueray_theme_display_options' );
} // end if
 
    // First, we register a section. This is necessary since all future options must belong to a
  add_settings_section(
    'general_settings_section',         // ID used to identify this section and with which to register options
    'Display Options',                  // Title to be displayed on the administration page
    'blueray_general_options_callback', // Callback used to render the description of the section
    'blueray_theme_display_options_page'     // Page on which to add this section of options
);
     
    // Next, we'll introduce the fields for toggling the visibility of content elements.
   add_settings_field(
    'firstareatitle',                      // ID used to identify the field throughout the theme
    'First Area Title',                           // The label to the left of the option interface element
    'blueray_firstareatitle_callback',   // The name of the function responsible for rendering the option interface
    'blueray_theme_display_options_page',    // The page on which this option will be displayed
    'general_settings_section',         // The name of the section to which this field belongs
    array(                              // The array of arguments to pass to the callback. In this case, just a description.
        'First Area Title:'
    )
);
 
add_settings_field(
    'firstareatext',                    
    'First Area Text',             
    'blueray_firstareatext_callback', 
    'blueray_theme_display_options_page',                   
    'general_settings_section',        
    array(                             
        'First Area Text:'
    )
);
 
add_settings_field(
    'firstarealink',                    
    'First Area Link',             
    'blueray_firstarealink_callback', 
    'blueray_theme_display_options_page',                   
    'general_settings_section',        
    array(                             
        'First Area Link:'
    )
);
     
    // Finally, we register the fields with WordPress
     
   register_setting(
    'blueray_theme_display_options_page',
    'blueray_theme_display_options_page'
);
     
} // end blueray_initialize_theme_options
add_action('admin_init', 'blueray_initialize_theme_options');
 
/* ------------------------------------------------------------------------ *
 * Section Callbacks
 * ------------------------------------------------------------------------ */
 
function blueray_general_options_callback() {
    echo '<p>Set up the front page options</p>';
} // end sandbox_general_options_callback
 
/* ------------------------------------------------------------------------ *
 * Field Callbacks
 * ------------------------------------------------------------------------ */
 
function blueray_firstareatitle_callback($args) {
     
   // First, we read the options collection
    $options = get_option('blueray_theme_display_options_page');
     
    // Next, we update the name attribute to access this element's ID in the context of the display options array
    // We also access the show_header element of the options collection in the call to the checked() helper function
    $html = '<input type="checkbox" id="firstareatitle" name="blueray_theme_display_options_page[firstareatitle]" value="1" ' . checked(1, $options['firstareatitle'], false) . '/>';
     
    // Here, we'll take the first argument of the array and add it to a label next to the checkbox
    $html .= '<label for="firstareatitle"> '  . $args[0] . '</label>';
     
    echo $html;
     
} // end blueray_toggle_header_callback
 
function blueray_firstareatext_callback($args) {
 
   $options = get_option('blueray_theme_display_options_page');
     
    // Next, we update the name attribute to access this element's ID in the context of the display options array
    // We also access the show_header element of the options collection in the call to the checked() helper function
    $html = '<input type="checkbox" id="firstareatext" name="blueray_theme_display_options_page[firstareatext]" value="1" ' . checked(1, $options['firstareatext'], false) . '/>';
     
    // Here, we'll take the first argument of the array and add it to a label next to the checkbox
    $html .= '<label for="firstareatext"> '  . $args[0] . '</label>';
     
    echo $html;
     
} // end blueray_toggle_content_callback
 
function blueray_firstarealink_callback($args) {
     
     $options = get_option('blueray_theme_display_options_page');
     
    // Next, we update the name attribute to access this element's ID in the context of the display options array
    // We also access the show_header element of the options collection in the call to the checked() helper function
    $html = '<input type="checkbox" id="firstarealink" name="blueray_theme_display_options_page[firstarealink]" value="1" ' . checked(1, $options['firstarealink'], false) . '/>';
     
    // Here, we'll take the first argument of the array and add it to a label next to the checkbox
    $html .= '<label for="firstarealink"> '  . $args[0] . '</label>';
     
    echo $html;
     
} // end blueray_toggle_footer_callback


/**
 * Initializes the theme's social options by registering the Sections,
 * Fields, and Settings.
 *
 * This function is registered with the 'admin_init' hook.
 */
function blueray_theme_intialize_social_options() {
 
    // If the social options don't exist, create them.
    if( false == get_option( 'blueray_theme_social_options' ) ) {  
        add_option( 'blueray_theme_social_options' );
    } // end if
	
	
add_settings_section(
    'social_settings_section',          // ID used to identify this section and with which to register options
    'Social Options',                   // Title to be displayed on the administration page
    'blueray_social_options_callback',  // Callback used to render the description of the section
    'blueray_theme_social_options_page'      // Page on which to add this section of options
);	
	
add_settings_field(
    'twitter',                     
    'Twitter',                         
    'blueray_twitter_callback',
    'blueray_theme_social_options_page',
    'social_settings_section'
);
 
 add_settings_field(
    'facebook',                    
    'Facebook',                        
    'blueray_facebook_callback',   
    'blueray_theme_social_options_page',
    'social_settings_section'          
);
 
add_settings_field(
    'googleplus',                      
    'Google+',                         
    'blueray_googleplus_callback', 
    'blueray_theme_social_options_page',
    'social_settings_section'          
);
 
 register_setting(
    'blueray_theme_social_options_page',
    'blueray_theme_social_options_page',
    'blueray_theme_sanitize_social_options_page'
);
} // end sandbox_theme_intialize_social_options
add_action( 'admin_init', 'blueray_theme_intialize_social_options' );

function blueray_social_options_callback() {
    echo '<p>Provide the URL to the social networks you\'d like to display.</p>';
} // end blueray_social_options_callback

function blueray_twitter_callback() {
     
    // First, we read the social options collection
    $options = get_option( 'blueray_theme_social_options_page' );
     
    // Next, we need to make sure the element is defined in the options. If not, we'll set an empty string.
    $url = '';
    if( isset( $options['twitter'] ) ) {
        $url = $options['twitter'];
    } // end if
     
    // Render the output
    echo '<input type="text" id="twitter" name="blueray_theme_social_options_page[twitter]" value="' . $options['twitter'] . '" />';
     
} // end blueray_twitter_callback

function blueray_facebook_callback() {
     
    $options = get_option( 'blueray_theme_social_options_page' );
     
    $url = '';
    if( isset( $options['facebook'] ) ) {
        $url = $options['facebook'];
    } // end if
     
    // Render the output
    echo '<input type="text" id="facebook" name="blueray_theme_social_options_page[facebook]" value="' . $options['facebook'] . '" />';
     
} // end blueray_facebook_callback
 
function blueray_googleplus_callback() {
     
    $options = get_option( 'blueray_theme_social_options_page' );
     
    $url = '';
    if( isset( $options['googleplus'] ) ) {
        $url = $options['googleplus'];
    } // end if
     
    // Render the output
    echo '<input type="text" id="googleplus" name="blueray_theme_social_options_page[googleplus]" value="' . $options['googleplus'] . '" />';
     
} // end sandbox_googleplus_callback



function blueray_theme_sanitize_social_options_page( $input ) {
     
    // Define the array for the updated options
    $output = array();
 
    // Loop through each of the options sanitizing the data
    foreach( $input as $key => $val ) {
     
        if( isset ( $input[$key] ) ) {
            $output[$key] = esc_url_raw( strip_tags( stripslashes( $input[$key] ) ) );
        } // end if
     
    } // end foreach
     
    // Return the new collection
    return apply_filters( 'blueray_theme_sanitize_social_options_page', $output, $input );
 
} // end blueray_theme_sanitize_social_options_page
User avatar
Celauran
Moderator
Posts: 6427
Joined: Tue Nov 09, 2010 2:39 pm
Location: Montreal, Canada

Re: settings page redirects to options.php on save attempt

Post by Celauran »

Is WP_DEBUG on? Do you get any error messages?
Post Reply