1

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?

1 Answer 1

2

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.

1
  • Thanks saved my bacon! I started to get some odd behaviour (admin CSS thrown out, couldn't get in admin through top bar) with the code as it is. I swapped it round so the new link is within the if statement, which solved matters, I have no idea why! if( _POST['profile_type'] ) { $params['profile_type'] = $_POST['profile_type']; $link = add_query_arg( $params, $link ); } return $link;
    – danbrown
    Commented May 12, 2014 at 15:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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