If you work with a lot of custom post types in WP, you might eventually find yourself wanting to apply custom CSS to edit.php (the admin page that list all of the posts for a given post type) or post.php (the admin page that let’s you edit the actual post).
Unfortunately, there is no native way to determine this difference between pages and types, so I wrote this:
function add_to_admin_body_class( $classes ) {
// $classes comes from admin_body_class function
// get the global post variable
global $post;
// instantiate, should be overwritten below
$mode = '';
// get the current page's URI (the part /after/ your domain name)
$uri = $_SERVER["REQUEST_URI"];
// get the post type from WP
$post_type = get_post_type($post->ID);
// set the $mode variable to reflect the editorial /list/ page...
if ( strstr($uri,'edit.php') ) {
$mode = 'edit-list-';
}
// or the actual editor page
if ( strstr($uri,'post.php') ) {
$mode = 'edit-page-';
}
// append our new mode/post_type class to any existing classes
$classes .= $mode . $post_type;
// and send them back to WP
return $classes;
}
// add this filter to the admin_body_class hook
add_filter( 'admin_body_class', 'add_to_admin_body_class' );
So now, when you are viewing a list of your regular posts, you would have a new body class, something like:
edit-list-post
And, when editing a post, something like this:
edit-page-post
Alternatively, for custom posts, for example “movie”, you would see either:
edit-list-movie
or:
edit-page-movie
Thanks to Austin Passy for the initial starting point.
Hope this helps, happy WordPressing,
Atg
The plugin has been updated in both the WP Repo and on Github.
Just a slight modification to make sure the plugin only runs in admin pages and on post list pages.