0 ) {
foreach ( $css_output as $selector => $properties ) {
if ( ! count( $properties ) ) {
continue; }
$temp_parse_css = $selector . '{';
$properties_added = 0;
foreach ( $properties as $property => $value ) {
if ( '' === $value ) {
continue; }
$properties_added++;
$temp_parse_css .= $property . ':' . $value . ';';
}
$temp_parse_css .= '}';
if ( $properties_added > 0 ) {
$parse_css .= $temp_parse_css;
}
}
if ( '' != $parse_css && ( '' !== $min_media || '' !== $max_media ) ) {
$media_css = '@media ';
$min_media_css = '';
$max_media_css = '';
$media_separator = '';
if ( '' !== $min_media ) {
$min_media_css = '(min-width:' . $min_media . 'px)';
}
if ( '' !== $max_media ) {
$max_media_css = '(max-width:' . $max_media . 'px)';
}
if ( '' !== $min_media && '' !== $max_media ) {
$media_separator = ' and ';
}
$media_css .= $min_media_css . $media_separator . $max_media_css . '{' . $parse_css . '}';
return $media_css;
}
}// End if().
return $parse_css;
}
}// End if().
/**
* Return Theme options.
*/
if ( ! function_exists( 'astra_get_option' ) ) {
/**
* Return Theme options.
*
* @param string $option Option key.
* @param string $default Option default value.
* @param string $deprecated Option default value.
* @return Mixed Return option value.
*/
function astra_get_option( $option, $default = '', $deprecated = '' ) {
if ( '' != $deprecated ) {
$default = $deprecated;
}
$theme_options = Astra_Theme_Options::get_options();
/**
* Filter the options array for Astra Settings.
*
* @since 1.0.20
* @var Array
*/
$theme_options = apply_filters( 'astra_get_option_array', $theme_options, $option, $default );
$value = ( isset( $theme_options[ $option ] ) && '' !== $theme_options[ $option ] ) ? $theme_options[ $option ] : $default;
/**
* Dynamic filter astra_get_option_$option.
* $option is the name of the Astra Setting, Refer Astra_Theme_Options::defaults() for option names from the theme.
*
* @since 1.0.20
* @var Mixed.
*/
return apply_filters( "astra_get_option_{$option}", $value, $option, $default );
}
}
/**
* Return Theme options from postmeta.
*/
if ( ! function_exists( 'astra_get_option_meta' ) ) {
/**
* Return Theme options from postmeta.
*
* @param string $option_id Option ID.
* @param string $default Option default value.
* @param boolean $only_meta Get only meta value.
* @param string $extension Is value from extension.
* @param string $post_id Get value from specific post by post ID.
* @return Mixed Return option value.
*/
function astra_get_option_meta( $option_id, $default = '', $only_meta = false, $extension = '', $post_id = '' ) {
$post_id = ( '' != $post_id ) ? $post_id : astra_get_post_id();
$value = astra_get_option( $option_id, $default );
// Get value from option 'post-meta'.
if ( is_singular() || ( is_home() && ! is_front_page() ) ) {
$value = get_post_meta( $post_id, $option_id, true );
if ( empty( $value ) || 'default' == $value ) {
if ( true == $only_meta ) {
return false;
}
$value = astra_get_option( $option_id, $default );
}
}
/**
* Dynamic filter astra_get_option_meta_$option.
* $option_id is the name of the Astra Meta Setting.
*
* @since 1.0.20
* @var Mixed.
*/
return apply_filters( "astra_get_option_meta_{$option_id}", $value, $default, $default );
}
}// End if().
/**
* Helper function to get the current post id.
*/
if ( ! function_exists( 'astra_get_post_id' ) ) {
/**
* Get post ID.
*
* @param string $post_id_override Get override post ID.
* @return number Post ID.
*/
function astra_get_post_id( $post_id_override = '' ) {
if ( null == Astra_Theme_Options::$post_id ) {
global $post;
$post_id = 0;
if ( is_home() ) {
$post_id = get_option( 'page_for_posts' );
} elseif ( is_archive() ) {
global $wp_query;
$post_id = $wp_query->get_queried_object_id();
} elseif ( isset( $post->ID ) && ! is_search() && ! is_category() ) {
$post_id = $post->ID;
}
Astra_Theme_Options::$post_id = $post_id;
}
return apply_filters( 'astra_get_post_id', Astra_Theme_Options::$post_id, $post_id_override );
}
}
/**
* Display classes for primary div
*/
if ( ! function_exists( 'astra_primary_class' ) ) {
/**
* Display classes for primary div
*
* @param string|array $class One or more classes to add to the class list.
* @return void Echo classes.
*/
function astra_primary_class( $class = '' ) {
// Separates classes with a single space, collates classes for body element.
echo 'class="' . esc_attr( join( ' ', astra_get_primary_class( $class ) ) ) . '"';
}
}
/**
* Retrieve the classes for the primary element as an array.
*/
if ( ! function_exists( 'astra_get_primary_class' ) ) {
/**
* Retrieve the classes for the primary element as an array.
*
* @param string|array $class One or more classes to add to the class list.
* @return array Return array of classes.
*/
function astra_get_primary_class( $class = '' ) {
// array of class names.
$classes = array();
// default class for content area.
$classes[] = 'content-area';
// primary base class.
$classes[] = 'primary';
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();
}
// Filter primary div class names.
$classes = apply_filters( 'astra_primary_class', $classes, $class );
$classes = array_map( 'sanitize_html_class', $classes );
return array_unique( $classes );
}
}// End if().
/**
* Display classes for secondary div
*/
if ( ! function_exists( 'astra_secondary_class' ) ) {
/**
* Retrieve the classes for the secondary element as an array.
*
* @param string|array $class One or more classes to add to the class list.
* @return void echo classes.
*/
function astra_secondary_class( $class = '' ) {
// Separates classes with a single space, collates classes for body element.
echo 'class="' . esc_attr( join( ' ', get_astra_secondary_class( $class ) ) ) . '"';
}
}
/**
* Retrieve the classes for the secondary element as an array.
*/
if ( ! function_exists( 'get_astra_secondary_class' ) ) {
/**
* Retrieve the classes for the secondary element as an array.
*
* @param string|array $class One or more classes to add to the class list.
* @return array Return array of classes.
*/
function get_astra_secondary_class( $class = '' ) {
// array of class names.
$classes = array();
// default class from widget area.
$classes[] = 'widget-area';
// secondary base class.
$classes[] = 'secondary';
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();
}
// Filter secondary div class names.
$classes = apply_filters( 'astra_secondary_class', $classes, $class );
$classes = array_map( 'sanitize_html_class', $classes );
return array_unique( $classes );
}
}// End if().
/**
* Get post format
*/
if ( ! function_exists( 'astra_get_post_format' ) ) {
/**
* Get post format
*
* @param string $post_format_override Override post formate.
* @return string Return post format.
*/
function astra_get_post_format( $post_format_override = '' ) {
if ( ( is_home() ) || is_archive() ) {
$post_format = 'blog';
} else {
$post_format = get_post_format();
}
return apply_filters( 'astra_get_post_format', $post_format, $post_format_override );
}
}
/**
* Wrapper function for get_the_title() for blog post.
*/
if ( ! function_exists( 'astra_the_post_title' ) ) {
/**
* Wrapper function for get_the_title() for blog post.
*
* Displays title only if the page title bar is disabled.
*
* @since 1.0.15
* @param string $before Optional. Content to prepend to the title.
* @param string $after Optional. Content to append to the title.
* @param int $post_id Optional, default to 0. Post id.
* @param bool $echo Optional, default to true.Whether to display or return.
* @return string|void String if $echo parameter is false.
*/
function astra_the_post_title( $before = '', $after = '', $post_id = 0, $echo = true ) {
$enabled = apply_filters( 'astra_the_post_title_enabled', true );
if ( $enabled ) {
$title = astra_get_the_title( $post_id );
$before = apply_filters( 'astra_the_post_title_before', $before );
$after = apply_filters( 'astra_the_post_title_after', $after );
// This will work same as `the_title` function but with Custom Title if exits.
if ( $echo ) {
echo $before . $title . $after; // WPCS: XSS OK.
} else {
return $before . $title . $after;
}
}
}
}
/**
* Wrapper function for the_title()
*/
if ( ! function_exists( 'astra_the_title' ) ) {
/**
* Wrapper function for the_title()
*
* Displays title only if the page title bar is disabled.
*
* @param string $before Optional. Content to prepend to the title.
* @param string $after Optional. Content to append to the title.
* @param int $post_id Optional, default to 0. Post id.
* @param bool $echo Optional, default to true.Whether to display or return.
* @return string|void String if $echo parameter is false.
*/
function astra_the_title( $before = '', $after = '', $post_id = 0, $echo = true ) {
$title = '';
$blog_post_title = astra_get_option( 'blog-post-structure' );
$single_post_title = astra_get_option( 'blog-single-post-structure' );
if ( ( ( ! is_singular() && in_array( 'title-meta', $blog_post_title ) ) || ( is_single() && in_array( 'single-title-meta', $single_post_title ) ) || is_page() ) ) {
if ( apply_filters( 'astra_the_title_enabled', true ) ) {
$title = astra_get_the_title( $post_id );
$before = apply_filters( 'astra_the_title_before', $before );
$after = apply_filters( 'astra_the_title_after', $after );
$title = $before . $title . $after;
}
}
// This will work same as `the_title` function but with Custom Title if exits.
if ( $echo ) {
echo $title;
} else {
return $title;
}
}
}
/**
* Wrapper function for get_the_title()
*/
if ( ! function_exists( 'astra_get_the_title' ) ) {
/**
* Wrapper function for get_the_title()
*
* Return title for Title Bar and Normal Title.
*
* @param int $post_id Optional, default to 0. Post id.
* @param bool $echo Optional, default to false. Whether to display or return.
* @return string|void String if $echo parameter is false.
*/
function astra_get_the_title( $post_id = 0, $echo = false ) {
$title = '';
if ( $post_id || is_singular() ) {
$title = get_the_title( $post_id );
} else {
if ( is_front_page() && is_home() ) {
// Default homepage.
$title = apply_filters( 'astra_the_default_home_page_title', esc_html( 'Home', 'astra' ) );
} elseif ( is_home() ) {
// blog page.
$title = apply_filters( 'astra_the_blog_home_page_title', get_the_title( get_option( 'page_for_posts', true ) ) );
} elseif ( is_404() ) {
// for 404 page - title always display.
$title = apply_filters( 'astra_the_404_page_title', esc_html( 'This page doesn\'t seem to exist.', 'astra' ) );
// for search page - title always display.
} elseif ( is_search() ) {
/* translators: 1: search string */
$title = apply_filters( 'astra_the_search_page_title', sprintf( __( 'Search Results for: %s', 'astra' ), '' . get_search_query() . '' ) );
} elseif ( class_exists( 'WooCommerce' ) && is_shop() ) {
$title = woocommerce_page_title();
} elseif ( is_archive() ) {
$title = get_the_archive_title();
}
}
// This will work same as `get_the_title` function but with Custom Title if exits.
if ( $echo ) {
echo $title;
} else {
return $title;
}
}
}// End if().
/**
* Archive Page Title
*/
if ( ! function_exists( 'astra_archive_page_info' ) ) {
/**
* Wrapper function for the_title()
*
* Displays title only if the page title bar is disabled.
*/
function astra_archive_page_info() {
if ( apply_filters( 'astra_the_title_enabled', true ) ) {
// Author.
if ( is_author() ) { ?>
' . get_search_query() . '' ) );
?>
hexdec( substr( $hex,0,2 ) ),
'g' => hexdec( substr( $hex,2,2 ) ),
'b' => hexdec( substr( $hex,4,2 ) ),
);
// Should we darken the color?
if ( 'reverse' == $type && $shortcode_atts['r'] + $shortcode_atts['g'] + $shortcode_atts['b'] > 382 ) {
$steps = -$steps;
} elseif ( 'darken' == $type ) {
$steps = -$steps;
}
// Build the new color.
$steps = max( -255, min( 255, $steps ) );
$shortcode_atts['r'] = max( 0,min( 255,$shortcode_atts['r'] + $steps ) );
$shortcode_atts['g'] = max( 0,min( 255,$shortcode_atts['g'] + $steps ) );
$shortcode_atts['b'] = max( 0,min( 255,$shortcode_atts['b'] + $steps ) );
$r_hex = str_pad( dechex( $shortcode_atts['r'] ), 2, '0', STR_PAD_LEFT );
$g_hex = str_pad( dechex( $shortcode_atts['g'] ), 2, '0', STR_PAD_LEFT );
$b_hex = str_pad( dechex( $shortcode_atts['b'] ), 2, '0', STR_PAD_LEFT );
return '#' . $r_hex . $g_hex . $b_hex;
}
}// End if().