apply_filters( 'body_class', string[] $classes, string[] $class )

Filters the list of CSS body class names for the current post or page.


Parameters Parameters

$classes

(string[]) An array of body class names.

$class

(string[]) An array of additional class names added to the body.


Top ↑

More Information More Information

Note that the filter function must return the array of classes after it is finished processing, or all of the classes will be cleared and could seriously impact the visual state of a user’s site.


Top ↑

Source Source

File: wp-includes/post-template.php

View on Trac



Top ↑

Changelog Changelog

Changelog
Version Description
2.8.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 1 content
    Contributed by Drew Jaynes

    Add New Classes

    You can add additional body classes by filtering the {@see ‘body_class’} hook.

    To add the following to the WordPress Theme functions.php file, changing my_class_names and class-name to meet your needs:

    // Add specific CSS class by filter.
    
    add_filter( 'body_class', function( $classes ) {
    	return array_merge( $classes, array( 'class-name' ) );
    } );
    
  2. Skip to note 2 content
    Contributed by Maarten Menten

    Following function adds CSS classes that may be useful

    
    function my_body_class( $classes )
    {	
    	$include = array
    	(
    		// browsers/devices (https://codex.wordpress.org/Global_Variables)
    		'is-iphone'            => $GLOBALS['is_iphone'],
    		'is-chrome'            => $GLOBALS['is_chrome'],
    		'is-safari'            => $GLOBALS['is_safari'],
    		'is-ns4'               => $GLOBALS['is_NS4'],
    		'is-opera'             => $GLOBALS['is_opera'],
    		'is-mac-ie'            => $GLOBALS['is_macIE'],
    		'is-win-ie'            => $GLOBALS['is_winIE'],
    		'is-gecko'             => $GLOBALS['is_gecko'],
    		'is-lynx'              => $GLOBALS['is_lynx'],
    		'is-ie'                => $GLOBALS['is_IE'],
    		'is-edge'              => $GLOBALS['is_edge'],
    		// WP Query (already included by default, but nice to have same format)
    		'is-archive'           => is_archive(),
    		'is-post_type_archive' => is_post_type_archive(),
    		'is-attachment'        => is_attachment(),
    		'is-author'            => is_author(),
    		'is-category'          => is_category(),
    		'is-tag'               => is_tag(),
    		'is-tax'               => is_tax(),
    		'is-date'              => is_date(),
    		'is-day'               => is_day(),
    		'is-feed'              => is_feed(),
    		'is-comment-feed'      => is_comment_feed(),
    		'is-front-page'        => is_front_page(),
    		'is-home'              => is_home(),
    		'is-privacy-policy'    => is_privacy_policy(),
    		'is-month'             => is_month(),
    		'is-page'              => is_page(),
    		'is-paged'             => is_paged(),
    		'is-preview'           => is_preview(),
    		'is-robots'            => is_robots(),
    		'is-search'            => is_search(),
    		'is-single'            => is_single(),
    		'is-singular'          => is_singular(),
    		'is-time'              => is_time(),
    		'is-trackback'         => is_trackback(),
    		'is-year'              => is_year(),
    		'is-404'               => is_404(),
    		'is-embed'             => is_embed(),
    		// Mobile
    		'is-mobile'            => wp_is_mobile(),
    		'is-desktop' 		   => ! wp_is_mobile(),
    		// Common
    		'has-blocks'           => function_exists( 'has_blocks' ) && has_blocks(),
    	);
    
    	// Sidebars
    	foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) 
    	{
    		$include[ "is-sidebar-{$sidebar['id']}" ] = is_active_sidebar( $sidebar['id'] );
    	}
    
    	// Add classes
    
    	foreach ( $include as $class => $do_include ) 
    	{
    		if ( $do_include ) $classes[ $class ] = $class;
    	}
    
    	// Return
    
    	return $classes;
    }
    
    add_filter( 'body_class', 'my_body_class' );
    
    
  3. Skip to note 3 content
    Contributed by Drew Jaynes

    Remove Classes

    Remove an existing body class by un-setting the key from the $classes array.

    // Removes a class from the body_class array.
    
    add_filter( 'body_class', function( $classes ) {
    	if ( isset( $classes['class-to-remove'] ) ) {
    		unset( $classes['class-to-remove'] );
    	}
    	return $classes;
    } );
    

You must log in before being able to contribute a note or feedback.