body_class(). Props ionfish. fixes #7939

git-svn-id: http://svn.automattic.com/wordpress/trunk@10485 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2009-02-02 19:21:38 +00:00
parent 19e01565d4
commit af5c60f83f
3 changed files with 137 additions and 2 deletions

View File

@ -22,7 +22,7 @@
<?php wp_head(); ?>
</head>
<body>
<body <?php body_class(); ?>>
<div id="rap">
<h1 id="header"><a href="<?php bloginfo('url'); ?>/"><?php bloginfo('name'); ?></a></h1>

View File

@ -32,7 +32,7 @@ if ( !empty($withcomments) && !is_single() ) {
<?php wp_head(); ?>
</head>
<body>
<body <?php body_class(); ?>>
<div id="page">

View File

@ -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.
*