I'm testing different layouts for my admin pages, and the easiest way I found to determine which layout to load is with URL parameters. One of those parameters is "fullscreen=1" which hides the admin menu, for instance. The problem is, whenever I save a post / custom post type by submitting a form, WordPress will redirect me without preserving my parameter, thus breaking my layout by adding back the admin menu...

Is there an easy way to achieve this?

link|improve this question

feedback

1 Answer

up vote 0 down vote accepted

I finally figured this one out. Turns out I was so focused on filters and actions that I forgot about the basics.

In order to preserve any custom URL parameters after saving a post (via submitting the form) do the following:

Filter your admin URL with a conditional that checks for the parameter you want to preserve (based on this answer), like this:

add_filter('admin_url','add_fullscreen_param');
function add_fullscreen_param( $link ) {
    if(isset($_REQUEST['fullscreen']) && $_REQUEST['fullscreen'] == '1') {
        $params['fullscreen'] = '1';
    }
    $link = add_query_arg( $params, $link );

    return $link;
}

Then, all you have to do is make sure you send that request along with your form, because it will activate the filter above prior to redirecting back to your post / page / custom post type. To do this, simply add a hidden input.

if(isset($_REQUEST['fullscreen']) && $_REQUEST['fullscreen'] == '1') {  
    echo('<input type="hidden" name="fullscreen" value="1" />');
}

So if you access /wp-admin/post.php?post=100&action=edit&fullscreen=1, that last parameter will be there after saving the form.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.