From af5c60f83f4b20d2cdf3e67a8530e055383f43ac Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 2 Feb 2009 19:21:38 +0000 Subject: [PATCH] body_class(). Props ionfish. fixes #7939 git-svn-id: http://svn.automattic.com/wordpress/trunk@10485 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-content/themes/classic/header.php | 2 +- wp-content/themes/default/header.php | 2 +- wp-includes/post-template.php | 135 +++++++++++++++++++++++++++ 3 files changed, 137 insertions(+), 2 deletions(-) diff --git a/wp-content/themes/classic/header.php b/wp-content/themes/classic/header.php index a9ca0dd8b..f16c2805f 100644 --- a/wp-content/themes/classic/header.php +++ b/wp-content/themes/classic/header.php @@ -22,7 +22,7 @@ - +>

diff --git a/wp-content/themes/default/header.php b/wp-content/themes/default/header.php index 1dd3b5964..63f20d335 100644 --- a/wp-content/themes/default/header.php +++ b/wp-content/themes/default/header.php @@ -32,7 +32,7 @@ if ( !empty($withcomments) && !is_single() ) { - +>
diff --git a/wp-includes/post-template.php b/wp-includes/post-template.php index ae44aa2a2..6b648d003 100644 --- a/wp-includes/post-template.php +++ b/wp-includes/post-template.php @@ -338,6 +338,141 @@ function get_post_class( $class = '', $post_id = null ) { return apply_filters('post_class', $classes, $class, $post_id); } +/** + * Display the classes for the body element. + * + * @since 2.8.0 + * + * @param string|array $class One or more classes to add to the class list. + */ +function body_class( $class = '' ) { + // Separates classes with a single space, collates classes for body element + echo 'class="' . join( ' ', get_body_class( $class ) ) . '"'; +} + +/** + * Retrieve the classes for the body element as an array. + * + * @since 2.8.0 + * + * @param string|array $class One or more classes to add to the class list. + * @return array Array of classes. + */ +function get_body_class( $class = '' ) { + global $wp_query, $current_user; + + $classes = array(); + + if ( 'rtl' == get_bloginfo('text_direction') ) + $classes[] = 'rtl'; + + if ( is_front_page() ) + $classes[] = 'home'; + if ( is_home() ) + $classes[] = 'blog'; + if ( is_archive() ) + $classes[] = 'archive'; + if ( is_date() ) + $classes[] = 'date'; + if ( is_search() ) + $classes[] = 'search'; + if ( is_paged() ) + $classes[] = 'paged'; + if ( is_attachment() ) + $classes[] = 'attachment'; + if ( is_404() ) + $classes[] = 'error404'; + + if ( is_single() ) { + the_post(); + + $postID = $wp_query->post->ID; + $classes[] = 'single postid-' . $postID; + + if ( is_attachment() ) { + $mime_type = get_post_mime_type(); + $mime_prefix = array( 'application/', 'image/', 'text/', 'audio/', 'video/', 'music/' ); + $classes[] = 'attachmentid-' . $postID . ' attachment-' . str_replace( $mime_prefix, "", "$mime_type" ); + } + + rewind_posts(); + } elseif ( is_archive() ) { + if ( is_author() ) { + $author = $wp_query->get_queried_object(); + $classes[] = 'author'; + $classes[] = 'author-' . $author->user_nicename; + } elseif ( is_category() ) { + $cat = $wp_query->get_queried_object(); + $classes[] = 'category'; + $classes[] = 'category-' . $cat->slug; + } elseif ( is_tag() ) { + $tags = $wp_query->get_queried_object(); + $classes[] = 'tag'; + $classes[] = 'tag-' . $tags->slug; + } + } elseif ( is_page() ) { + the_post(); + + $pageID = $wp_query->post->ID; + $page_children = wp_list_pages("child_of=$pageID&echo=0"); + + if ( $page_children ) + $classes[] = 'page-parent'; + + if ( $wp_query->post->post_parent ) + $classes[] = 'page-child parent-pageid-' . $wp_query->post->post_parent; + + if ( is_page_template() ) + $classes[] = 'page-template page-template-' . str_replace( '.php', '-php', get_post_meta( $pageID, '_wp_page_template', true ) ); + + rewind_posts(); + } elseif ( is_search() ) { + the_post(); + + if ( have_posts() ) + $classes[] = 'search-results'; + else + $classes[] = 'search-no-results'; + + rewind_posts(); + } + + if ( is_user_logged_in() ) + $classes[] = 'logged-in'; + + $page = $wp_query->get('page'); + + if ( !$page || $page < 2) + $page = $wp_query->get('paged'); + + if ( $page && $page > 1 ) { + $classes[] = 'paged-' . $page; + + if ( is_single() ) + $classes[] = 'single-paged-' . $page; + elseif ( is_page() ) + $classes[] = 'page-paged-' . $page; + elseif ( is_category() ) + $classes[] = 'category-paged-' . $page; + elseif ( is_tag() ) + $classes[] = 'tag-paged-' . $page; + elseif ( is_date() ) + $classes[] = 'date-paged-' . $page; + elseif ( is_author() ) + $classes[] = 'author-paged-' . $page; + elseif ( is_search() ) + $classes[] = 'search-paged-' . $page; + } + + if ( !empty($class) ) { + if ( !is_array( $class ) ) + $class = preg_split('#\s+#', $class); + $classes = array_merge($classes, $class); + } + + return apply_filters('body_class', $classes, $class); +} + /** * Whether post requires password and correct password has been provided. *