File: /home/crowdandsafety/wordpress-backups/x/framework/legacy/functions/frontend/classes.php
<?php
// =============================================================================
// FUNCTIONS/GLOBAL/CLASSES.PHP
// -----------------------------------------------------------------------------
// Outputs custom classes for various elements, sometimes depending on options
// selected in the Customizer.
// =============================================================================
// =============================================================================
// TABLE OF CONTENTS
// -----------------------------------------------------------------------------
// 01. Body Class
// 02. Post Class
// 03. Main Content Class
// 04. Sidebar Class
// 05. Portfolio Entry Class
// 06. Responsive Embeds
// =============================================================================
// Body Class
// =============================================================================
if ( ! function_exists( 'x_body_class' ) ) :
function x_body_class( $output ) {
$stack = x_get_stack();
$entry_id = get_the_ID();
//
// Stack.
//
if ( $stack == 'icon' ) {
$output[] .= 'x-stack-' . $stack;
} else {
$output[] .= 'x-' . $stack;
if ( $stack == 'integrity' ) {
if ( x_get_option( 'x_integrity_design' ) == 'dark' ) {
$output[] .= 'x-integrity-dark';
} else {
$output[] .= 'x-integrity-light';
}
}
}
//
// Custom.
//
$custom_class = get_post_meta( $entry_id, '_x_entry_body_css_class', true );
if ( $custom_class != '' && is_singular() ) {
$output[] .= $custom_class;
}
//
// Child Theme.
//
if ( is_child_theme() ) {
$output[] = 'x-child-theme-active';
}
//
// Site layout.
//
switch ( x_get_site_layout() ) {
case 'boxed' :
$output[] .= 'x-boxed-layout-active';
break;
case 'full-width' :
$output[] .= 'x-full-width-layout-active';
break;
}
//
// Don't continue adding classes if the Layout Builder is being used
//
if ( did_action( 'cs_will_output_layout' ) ) {
return $output;
}
//
// Content layout.
//
switch ( x_get_content_layout() ) {
case 'content-sidebar' :
$output[] .= 'x-content-sidebar-active';
break;
case 'sidebar-content' :
$output[] .= 'x-sidebar-content-active';
break;
case 'full-width' :
$output[] .= 'x-full-width-active';
break;
}
//
// Blog and posts.
//
if ( is_home() ) {
if ( x_get_option( 'x_blog_style' ) == 'masonry' ) {
$output[] .= 'x-masonry-active x-blog-masonry-active';
} else {
$output[] .= 'x-blog-standard-active';
}
}
if ( x_get_option( 'x_blog_enable_post_meta' ) == '' ) {
$output[] .= 'x-post-meta-disabled';
}
//
// Archives.
//
if ( is_archive() && ! x_is_shop() ) {
if ( x_get_option( 'x_archive_style' ) == 'masonry' ) {
$output[] .= 'x-masonry-active x-archive-masonry-active';
} else {
$output[] .= 'x-archive-standard-active';
}
}
//
// Pages.
//
if ( is_page() && get_post_meta( $entry_id, '_x_entry_disable_page_title', true ) == 'on' ) {
$output[] .= 'x-page-title-disabled';
}
//
// Portfolio.
//
if ( is_page_template( 'template-layout-portfolio.php' ) ) {
$output[] .= 'x-masonry-active x-portfolio-masonry-active';
}
if ( x_get_option( 'x_portfolio_enable_post_meta' ) == '' ) {
$output[] .= 'x-portfolio-meta-disabled';
}
//
// Icon.
//
if ( $stack == 'icon' && get_post_meta( $entry_id, '_x_icon_blank_template_sidebar', true ) == 'Yes' ) {
$output[] .= 'x-blank-template-sidebar-active';
}
//
// Ethos.
//
if ($stack == 'ethos') {
if ( is_home() && x_get_option( 'x_ethos_post_slider_blog_enable' ) == 1 ) {
$output[] .= 'x-post-slider-blog-active';
}
if ( ( is_category() || is_tag() ) && x_get_option( 'x_ethos_post_slider_archive_enable' ) == 1 ) {
$output[] .= 'x-post-slider-archive-active';
}
}
return $output;
}
add_filter( 'body_class', 'x_body_class' );
endif;
// Post Class
// =============================================================================
if ( ! function_exists( 'x_post_class' ) ) :
function x_post_class( $output, $class, $post_id ) {
switch ( has_post_thumbnail( $post_id ) ) {
case true :
$output[] = 'has-post-thumbnail';
break;
case false :
$output[] = 'no-post-thumbnail';
break;
}
return $output;
}
add_filter( 'post_class', 'x_post_class', 10, 3 );
endif;
// Main Content Class
// =============================================================================
if ( ! function_exists( 'x_main_content_class' ) ) :
function x_main_content_class( $echo = true ) {
$output = '';
switch ( x_get_content_layout() ) {
case 'content-sidebar' :
$output = 'x-main left';
break;
case 'sidebar-content' :
$output = 'x-main right';
break;
case 'full-width' :
$output = 'x-main full';
break;
}
if ( $echo ) echo $output;
else return $output;
}
endif;
// Sidebar Class
// =============================================================================
if ( ! function_exists( 'x_sidebar_class' ) ) :
function x_sidebar_class() {
switch ( x_get_content_layout() ) {
case 'content-sidebar' :
$output = 'x-sidebar right';
break;
case 'sidebar-content' :
$output = 'x-sidebar left';
break;
default :
$output = 'x-sidebar right';
}
echo $output;
}
endif;
// Responsive Embeds
// =============================================================================
add_filter('embed_oembed_html', 'x_responsive_embed_class', 10, 4);
if ( ! function_exists( 'x_responsive_embed_class' ) ) :
function x_responsive_embed_class($html, $url, $attr, $post_id) {
if (! function_exists( 'cs_tag' ) ) {
return $html;
}
$embed = x_get_embed_cache( $url, $attr, $post_id );
$classes = [ $embed['info']->type == 'video' ? 'x-resp-embed' : 'x-embed' ]; //responsive wrapper or not
$classes[] = 'x-is-' . $embed['info']->type;
$classes[] = 'x-is-' . sanitize_title ( $embed['info']->provider_name );
return cs_tag( 'div', [ 'class' => $classes], $html );
}
endif;