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 ↑

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

    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;
    } );
    
  2. Skip to note 2 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' ) );
    } );
    
  3. Skip to note 3 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' );
    
    

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