One of the most frustrating things I’ve encountered while working with WordPress came a few versions ago when they decided it was a good idea to ‘clean up’ the editing interface by hiding most of the post meta box options.

“Streamlined Writing Interface – new users of WordPress will find the write screen much less cluttered than before, as more of the options are hidden by default. You can click on Screen Options in the top right to bring them back.”

Here’s what the ‘Screen Options’ looks like, when expanded:

Toggling each check box will customize your preferences for that particular user account, but when you’re developing a WordPress theme for hundreds of users (like I currently am in the middle of), consistency and documentation is important. I need to know that every user is going to start with the same screen options out of the box.

To use it, you need to know the ID of the div you want to show ($id) and the callback function you want to run ($callback). For those writing custom meta boxes, these two things are easy to find because you create them.

But if you’re restoring the basic WordPress editor options, you have to track down what they already are.

After researching and testing, here are the $id and $callback names needed for each:

So to pull the whole thing off, add this to your functions.php file. You don’t need them all though, only the lines that you specifically want to add. Also, the user’s custom preference still takes precedent. So as soon as they start showing/hiding screen options, WordPress goes by that alone. It’s written into core with no option to filter (template.php line 1050).

UPDATE: Well, it looks like none of that above stuff really works once you customize your user profile screen options.

The code in tempalte.php clearly sets the $hidden variable to what is stored in the DB for that user and then if there’s nothing in the DB, it runs the default hidden array and checks for a filter after that. So running filters won’t help if you’ve ever set your own screen options at any time. Even if you restored them to ‘default’. Pretty lame.

And just customize that hidden array with the $ID that you wish to not show. So $hidden = array(); will show everything. And again, this only works for users who haven’t ever customized their options. Once you do, it’s too late!