Opened 6 years ago
Last modified 6 years ago
#43963 new enhancement
Add admin body class for multisite blog ID and network admin context
Reported by: | dryanpress | Owned by: | |
---|---|---|---|
Milestone: | Awaiting Review | Priority: | normal |
Severity: | minor | Version: | |
Component: | Administration | Keywords: | 2nd-opinion |
Focuses: | administration, multisite | Cc: |
Description
In multisite, it'd be great to have an admin body class to safely scope CSS to specific blogs (i.e. blog-2
or network-admin
) available by default. I often filter admin_body_class
to add these.
One situation where I often use this is conditional override of the text Site Title in the Admin Bar with a logo -- but only if the logo exists. PHP can certainly be used to check context before printing conditional CSS, but the body class adds a safe, client-side scope and clear approach for avoiding in-admin style collisions.
Example:
if ( ! empty( $logo ) ) { ?> body.blog-<?php echo esc_attr( $site_id ); ?> li#wp-admin-bar-site-name > a.ab-item:first-of-type, body.blog-<?php echo esc_attr( $site_id ); ?> #wpadminbar .ab-top-menu > li#wp-admin-bar-site-name.menupop:hover > .ab-item:first-of-type, body.blog-<?php echo esc_attr( $site_id ); ?> #wpadminbar .ab-top-menu > li#wp-admin-bar-site-name.menupop.hover > .ab-item:first-of-type { font-size: 0; // safely hide default text background-image: url("<?php echo esc_url( $logo ); ?>"); background-size: <?php echo esc_html( $logo_width ); ?>; background-position: center; background-repeat: no-repeat; min-width: 120px; } <?php }
Change History (2)
Note: See
TracTickets for help on using
tickets.
Hi @dryanpress, thanks for opening this ticket and taking time to discuss in office hours today.
I'm in the middle on whether or not this belongs as part of core or should remain as plugin/theme code. There is a likelihood that it would be useful for people customizing the admin.
As discussed in chat,
.network-admin
exists for the network admin and.wp-admin
exists for all admin pages. We can use that to determine site vs network. The larger question is how to identify an individual site..site-#
would be simple, though also seems like something that may belong as a front-end class or per-row in the sites list table. I suggested.site-#-admin
, though I'm not sure if that's confusing.I'm hoping some others will chime in with feedback here around naming. :)