Usage
This function runs automatically, so it is not called manually. Is this incorrect?
Source File
Located in /libs/Functions.php on line 2898.
No Hooks
This function does not have any filters or actions available. Request one?
PHP
public function body_classes($classes){ if ( !$this->is_admin_page() ){ $this->timer('Nebula Body Classes'); $spaces_and_dots = array(' ', '.'); $underscores_and_hyphens = array('_', '-'); //Check the Save Data header $classes[] = ( $this->is_save_data() )? 'save-data' : ''; //Device $classes[] = strtolower($this->get_device('formfactor')); //Form factor (desktop, tablet, mobile) $classes[] = strtolower($this->get_device('full')); //Device make and model $classes[] = strtolower(str_replace($spaces_and_dots, $underscores_and_hyphens, $this->get_os('full'))); //Operating System name with version $classes[] = strtolower(str_replace($spaces_and_dots, $underscores_and_hyphens, $this->get_os('name'))); //Operating System name $classes[] = strtolower(str_replace($spaces_and_dots, $underscores_and_hyphens, $this->get_browser('full'))); //Browser name and version $classes[] = strtolower(str_replace($spaces_and_dots, $underscores_and_hyphens, $this->get_browser('name'))); //Browser name $classes[] = strtolower(str_replace($spaces_and_dots, $underscores_and_hyphens, $this->get_browser('engine'))); //Rendering engine //Website language $classes[] = 'lang-blog-' . strtolower(get_bloginfo('language')); if ( is_rtl() ){ $classes[] = 'lang-dir-rtl'; } //Preferred browser language if ( !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ){ $classes[] = 'lang-user-' . strtolower(explode(",", $_SERVER['HTTP_ACCEPT_LANGUAGE'])[0]); //Example: fr-fr,en-us;q=0.7,en;q=0.3 } //When installed to the homescreen, Chrome is detected as "Chrome Mobile". Supplement it with a "chrome" class. if ( $this->get_browser('name') === 'Chrome Mobile' ){ $classes[] = 'chrome'; } //User Information $current_user = wp_get_current_user(); if ( is_user_logged_in() ){ $classes[] = 'user-logged-in'; $classes[] = 'user-' . $current_user->user_login; $user_info = get_userdata(get_current_user_id()); if ( !empty($user_info->roles) ){ $classes[] = 'user-role-' . $user_info->roles[0]; } else { $classes[] = 'user-role-unknown'; } } else { $classes[] = 'user-not-logged-in'; } //Staff if ( $this->is_staff() ){ $classes[] = 'is-staff'; if ( $this->is_dev() ){ $classes[] = 'staff-developer'; } elseif ( $this->is_client() ){ $classes[] = 'staff-client'; } } //Post Information if ( !is_search() && !is_archive() && !is_front_page() && !is_404() ){ global $post; if ( isset($post) ){ $segments = explode('/', trim(parse_url($this->super->server['REQUEST_URI'], PHP_URL_PATH), '/')); $parents = get_post_ancestors($post->ID); foreach ( $parents as $parent ){ if ( !empty($parent) ){ $classes[] = 'ancestor-id-' . $parent; } } foreach ( $segments as $segment ){ if ( !empty($segment) ){ $classes[] = 'ancestor-of-' . $segment; } } foreach ( get_the_category($post->ID) as $category ){ $classes[] = 'cat-id-' . $category->cat_ID; $classes[] = 'cat-' . $category->slug; } } } //Singular if ( is_singular() ){ $classes[] = 'singular'; } else { $classes[] = 'hfeed'; //Adds `hfeed` to non singular pages. } //Give each page a unique class if ( is_page() ){ $classes[] = 'page-' . basename(get_permalink()); } //If this post has a featured image if ( has_post_thumbnail() ){ $classes[] = 'has-featured-image'; } //Customizer if ( is_customize_preview() ){ $classes[] = 'customizer-preview'; } //Front Page if ( is_front_page() ){ $classes[] = 'front-page'; //Homepage Hero (Customizer) if ( !get_theme_mod('nebula_hero', true) ){ $classes[] = 'no-hero'; } } $nebula_theme_info = wp_get_theme(); $classes[] = 'nebula'; $classes[] = 'nebula_' . str_replace('.', '-', $this->version('primary')); //Time of Day if ( $this->has_business_hours() ){ $classes[] = ( $this->business_open() )? 'business-open' : 'business-closed'; } $relative_time = $this->relative_time('description'); foreach( $relative_time as $relative_desc ){ $classes[] = 'time-' . $relative_desc; } if ( date('H') >= 12 ){ $classes[] = 'time-pm'; } else { $classes[] = 'time-am'; } if ( $this->get_option('latitude') && $this->get_option('longitude') ){ $latitude = floatval($this->get_option('latitude')); $longitude = floatval($this->get_option('longitude')); global $sunrise, $sunset; $suninfo = date_sun_info(strtotime('today'), $latitude, $longitude); //Civil twilight = 96°, Nautical twilight = 102°, Astronomical twilight = 108° - these are already accounted for in this PHP function $sunrise = strtotime($suninfo['sunrise']); //The timestamp of the sunrise (zenith angle = 90°35') $sunset = strtotime($suninfo['sunset']); //The timestamp of the sunset (zenith angle = 90°35') $length_of_daylight = $sunset-$sunrise; $length_of_darkness = DAY_IN_SECONDS-$length_of_daylight; if ( time() >= $sunrise && time() <= $sunset ){ $classes[] = 'time-daylight'; if ( strtotime('now') < $sunrise+($length_of_daylight/2) ){ $classes[] = 'time-waxing-gibbous'; //Before solar noon $classes[] = ( strtotime('now') < ($length_of_daylight/4)+$sunrise )? 'time-narrow' : 'time-wide'; } else { $classes[] = 'time-waning-gibbous'; //After solar noon $classes[] = ( strtotime('now') < ((3*$sunset)+$sunrise)/4 )? 'time-wide' : 'time-narrow'; } } else { $classes[] = 'time-darkness'; $previous_sunset_modifier = ( date('H') < 12 )? DAY_IN_SECONDS : 0; //Times are in UTC, so if it is after actual midnight (before noon) we need to use the sunset minus 1 day in formulas $solar_midnight = (($sunset-$previous_sunset_modifier)+($length_of_darkness/2)); //Calculate the appropriate solar midnight (either yesterday's or tomorrow's) [see above] if ( strtotime('now') < $solar_midnight ){ $classes[] = 'time-waning-crescent'; //Before solar midnight $classes[] = ( strtotime('now') < ($length_of_darkness/4)+($sunset-$previous_sunset_modifier) )? 'time-wide' : 'time-narrow'; } else { $classes[] = 'time-waxing-crescent'; //After solar midnight $classes[] = ( strtotime('now') < ($sunrise+$solar_midnight)/2 )? 'time-narrow' : 'time-wide'; } } $sunrise_sunset_length = 35; //Length of sunrise/sunset in minutes. if ( strtotime('now') >= $sunrise-(60*$sunrise_sunset_length) && strtotime('now') <= $sunrise+(60*$sunrise_sunset_length) ){ //X minutes before and after true sunrise $classes[] = 'time-sunrise'; } if ( strtotime('now') >= $sunset-(60*$sunrise_sunset_length) && strtotime('now') <= $sunset+(60*$sunrise_sunset_length) ){ //X minutes before and after true sunset $classes[] = 'time-sunset'; } } $classes[] = 'date-day-' . strtolower(date('l')); $classes[] = 'date-ymd-' . strtolower(date('Y-m-d')); $classes[] = 'date-month-' . strtolower(date('F')); $this->timer('Nebula Body Classes', 'end'); } return $classes; }
Override
This function can not be short-circuited with an override filter. Request one?