Extended Body Classes – Revisited
May11
The Extended Body Class Function
Theme designs can benefit from using an extra set of body_classes that do a variety of things, these are the ones that we use on ComicPress 2.8.1+ adapt this code to fit for you.
add_filter('body_class','comicpress_body_class'); function comicpress_body_class($classes = '') { global $current_user, $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone, $post, $wp_query, $comicpress_options; if (!empty($current_user)) { $user_login = addslashes($current_user->user_login); if (!empty($user_login)) $classes[] = 'user-'.$user_login; } else { $classes[] = 'user-guest'; } if (function_exists('comicpress_is_member')) { if (comicpress_is_member()) { $classes[] = 'sitemember'; } else { $classes[] = 'non-sitemember'; } } if (is_single() && !is_attachment()) { if (in_comic_category()) { $classes[] = 'comic'; } else { $classes[] = 'noncomic'; } } if($is_lynx) $classes[] = 'lynx'; elseif($is_gecko) $classes[] = 'gecko'; elseif($is_opera) $classes[] = 'opera'; elseif($is_NS4) $classes[] = 'ns4'; elseif($is_safari) $classes[] = 'safari'; elseif($is_chrome) $classes[] = 'chrome'; elseif($is_IE) $classes[] = 'ie'; else $classes[] = 'unknown'; if($is_iphone) $classes[] = 'iphone'; // Hijacked from the hybrid theme, http://themehybrid.com/ if (is_single()) { foreach ( (array)get_the_category( $wp_query->post->ID ) as $cat ) : $classes[] = 'single-category-' . sanitize_html_class( $cat->slug, $cat->term_id ); endforeach; $classes[] = 'single-author-' . get_the_author_meta( 'user_nicename', $wp_query->post->post_author ); } if ( is_sticky( $wp_query->post->ID ) ) { $classes[] = 'sticky-post'; } // NOT hijacked from anything, doi! people should do this. $rightnow = date('Gi'); $ampm = date('a'); $classes[] = $ampm; if ((int)$rightnow > 559 && (int)$rightnow < 1800) $classes[] = 'day'; if ((int)$rightnow < 600 || (int)$rightnow > 1759) $classes[] = 'night'; if ((int)$rightnow > 2329 || (int)$rightnow < 0030) $classes[] = 'midnight'; if ((int)$rightnow > 0559 && (int)$rightnow < 1130) $classes[] = 'morning'; if ((int)$rightnow > 1129 && (int)$rightnow < 1230) $classes[] = 'noon'; if ((int)$rightnow > 1759 && (int)$rightnow < 2330) $classes[] = 'evening'; $classes[] = strtolower(date('D')); if ( is_attachment() ) { $classes[] = 'attachment attachment-' . $wp_query->post->ID; $mime_type = explode( '/', get_post_mime_type() ); foreach ( $mime_type as $type ) : $classes[] = 'attachment-' . $type; endforeach; } $classes[] = 'layout-'.$comicpress_options['cp_theme_layout']; return $classes; }
You probably won’t be needing the sitemember and layout classes since they are fundamentally only for the ComicPress / CommPress themes.
Next page, Example of Usage.
Discussion (2) ¬
Thank you Phil. This is just way too cool. I could already do a lot of styling with the new body classes alone and now this. Thank you for sharing.