Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have been struggling with this one for about a week now. I would like to have 2 variables available on a settings page, but I cannot figure out how to do this using the Settings API.

Perhaps there is a better way to do this. What I am trying to do is have one variable that stores a list of sortable values which I am outputting in a table and using jQuery sortable to allow the user to sort. But I also have some related options (such as title for the section) that are not sortable, so I want to store them in a separate variable and output them normally using add_settings_field which is where things break down. The minute I add a second settings_fields() call in the callback function below, it will allow me to set the options covered by the last settings_fields() call. Obviously since the settings_fields() adds the nonce, action, and option_page fields tot he page the second one is overriding the first call.

So how do I include a second options variable on a settings page?

Here is my code so far:

Adding the submenu page:

    add_submenu_page(
        'crest_feed_admin',
        'Gallery View Options',
        'Gallery View',
        'manage_options',
        'crest_feed_admin_gallery_view',
        'crest_feed_menu_gallery_view_page'
    );

Register the settings variable:

register_setting( 'crest-feed-gallery-group', 'crest_gv_options' );  // need to add validation!

Callback function for submenu page creation:

function crest_feed_menu_gallery_view_page() {

    $options = get_option('crest_gv_options');
    ?>
    <div class="wrap">
        <div class="sir-crest-plugin-icon">
            <img src="<?php echo CREST_PLUGIN_DIR . '/images/admin-icon-large.png'; ?>" height=32 width=32 />
        </div>
        <h2><?php _e('Gallery List Items & Options'); ?></h2>
        <form method="post" action="options.php"> 

        <?php
        submit_button('Save Gallery View Options'); 
        settings_fields( 'crest-feed-gallery-group' ); 

        crest_drag_and_drop($options, 'gv');  // this function creates the table of sortable values

        submit_button('Save Gallery View Options'); 

        ?>
        </form>
    </div>
    <?php   
}
share|improve this question
    
Have you seen this? –  toscho Jun 24 '13 at 16:39
    
@toscho Very detailed answer. Thank you. So if I am understanding correctly what you are basically saying is don't use the Settings API at all in this instance? –  MatthewLee Jun 24 '13 at 17:04
    
You can use it if you want. Or just create a simple form and submit it to admin-post.php. –  toscho Jun 24 '13 at 17:20
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.