Advertisements

get_body_class

Definition:
function get_body_class( $class = '' ) {}

Retrieve the classes for the body element as an array.

Parameters

  • string|array $class: One or more classes to add to the class list.

Return values

returns:Array of classes.

Defined filters

  • body_class
    apply_filters( 'body_class', $classes, $class )

Source code

function get_body_class( $class = '' ) {

	global $wp_query, $wpdb;



	$classes = array();



	if ( is_rtl() )

		$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() ) {

		$post_id = $wp_query->get_queried_object_id();

		$post = $wp_query->get_queried_object();



		$classes[] = 'single';

		$classes[] = 'single-' . sanitize_html_class($post->post_type, $post_id);

		$classes[] = 'postid-' . $post_id;



		// Post Format

		if ( post_type_supports( $post->post_type, 'post-formats' ) ) {

			$post_format = get_post_format( $post->ID );



			if ( $post_format && !is_wp_error($post_format) )

				$classes[] = 'single-format-' . sanitize_html_class( $post_format );

			else

				$classes[] = 'single-format-standard';

		}



		if ( is_attachment() ) {

			$mime_type = get_post_mime_type($post_id);

			$mime_prefix = array( 'application/', 'image/', 'text/', 'audio/', 'video/', 'music/' );

			$classes[] = 'attachmentid-' . $post_id;

			$classes[] = 'attachment-' . str_replace( $mime_prefix, '', $mime_type );

		}

	} elseif ( is_archive() ) {

		if ( is_post_type_archive() ) {

			$classes[] = 'post-type-archive';

			$classes[] = 'post-type-archive-' . sanitize_html_class( get_query_var( 'post_type' ) );

		} else if ( is_author() ) {

			$author = $wp_query->get_queried_object();

			$classes[] = 'author';

			$classes[] = 'author-' . sanitize_html_class( $author->user_nicename , $author->ID );

			$classes[] = 'author-' . $author->ID;

		} elseif ( is_category() ) {

			$cat = $wp_query->get_queried_object();

			$classes[] = 'category';

			$classes[] = 'category-' . sanitize_html_class( $cat->slug, $cat->term_id );

			$classes[] = 'category-' . $cat->term_id;

		} elseif ( is_tag() ) {

			$tags = $wp_query->get_queried_object();

			$classes[] = 'tag';

			$classes[] = 'tag-' . sanitize_html_class( $tags->slug, $tags->term_id );

			$classes[] = 'tag-' . $tags->term_id;

		} elseif ( is_tax() ) {

			$term = $wp_query->get_queried_object();

			$classes[] = 'tax-' . sanitize_html_class( $term->taxonomy );

			$classes[] = 'term-' . sanitize_html_class( $term->slug, $term->term_id );

			$classes[] = 'term-' . $term->term_id;

		}

	} elseif ( is_page() ) {

		$classes[] = 'page';



		$page_id = $wp_query->get_queried_object_id();



		$post = get_page($page_id);



		$classes[] = 'page-id-' . $page_id;



		if ( $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' AND post_status = 'publish' LIMIT 1", $page_id) ) )

			$classes[] = 'page-parent';



		if ( $post->post_parent ) {

			$classes[] = 'page-child';

			$classes[] = 'parent-pageid-' . $post->post_parent;

		}

		if ( is_page_template() ) {

			$classes[] = 'page-template';

			$classes[] = 'page-template-' . sanitize_html_class( str_replace( '.', '-', get_post_meta( $page_id, '_wp_page_template', true ) ), '' );

		} else {

			$classes[] = 'page-template-default';

		}

	} elseif ( is_search() ) {

		if ( !empty( $wp_query->posts ) )

			$classes[] = 'search-results';

		else

			$classes[] = 'search-no-results';

	}



	if ( is_user_logged_in() )

		$classes[] = 'logged-in';



	if ( is_admin_bar_showing() )

		$classes[] = 'admin-bar';



	if ( get_background_image() || get_background_color() )

		$classes[] = 'custom-background';



	$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;

		elseif ( is_post_type_archive() )

			$classes[] = 'post-type-paged-' . $page;

	}



	if ( ! empty( $class ) ) {

		if ( !is_array( $class ) )

			$class = preg_split( '#\s+#', $class );

		$classes = array_merge( $classes, $class );

	} else {

		// Ensure that we always coerce class to being an array.

		$class = array();

	}



	$classes = array_map( 'esc_attr', $classes );



	return apply_filters( 'body_class', $classes, $class );

}

1222

Advertisements

No comments yet... Be the first to leave a reply!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: