$args ) { $defaults = array( 'handle' => $style, 'src' => '', 'deps' => null, 'version' => false, 'media' => 'all' ); $args = wp_parse_args( $args, $defaults ); if ( !empty( $args['src'] ) ) { wp_register_style( sanitize_key( $args['handle'] ), esc_url( $args['src'] ), is_array( $args['deps'] ) ? $args['deps'] : null, preg_replace( '/[^a-z0-9_\-.]/', '', strtolower( $args['version'] ) ), esc_attr( $args['media'] ) ); } } } /** * Tells WordPress to load the styles using the wp_enqueue_style() function. * * @since 3.0.0 * @access public * @return void */ function hoot_enqueue_styles() { /* Get styles. */ $styles = hoot_get_styles(); /* Loop through each style and enqueue it. */ foreach ( $styles as $style => $args ) if ( !empty( $args['src'] ) ) wp_enqueue_style( sanitize_key( $style ) ); } /** * Returns an array of the available styles for use in themes. * * @since 3.0.0 * @access public * @return array */ function hoot_get_styles() { /* Initialize */ $styles = array(); /* If a child theme is active, add the parent theme's style. */ // Cannot use 'hoot_locate_style()' as the function will always return child // theme stylesheet. Hence we have to manually locate and add parent stylesheet. if ( is_child_theme() ) { if ( defined( 'HOOT_DEBUG' ) ) $loadminified = ( HOOT_DEBUG ) ? false : true; else $loadminified = hoot_get_mod( 'load_minified', 0 ); /* Get the parent theme stylesheet (if a '.min' version of the stylesheet exists, use it) */ if ( $loadminified && file_exists( hoot_data()->template_dir . "style.min.css" ) ) $src = hoot_data()->template_uri . "style.min.css"; else // We can skip file_exists for src as parent style.css will always be there. $src = hoot_data()->template_uri . "style.css"; $styles['hoot-style'] = array( 'src' => $src, 'version' => hoot_data()->template_version, ); } /* Add the active theme style. */ $handle = ( is_child_theme() ) ? 'hoot-child-style' : 'hoot-style'; $styles[ $handle ] = array( 'src' => get_stylesheet_uri(), 'version' => ( is_child_theme() ) ? hoot_data()->childtheme_version : hoot_data()->template_version, ); /* Return the array of styles. */ return apply_filters( 'hoot_styles', $styles ); } /** * Filters the 'stylesheet_uri' returned by get_stylesheet_uri() to allow loading minimized * version of main 'style.css' file. It will detect if a 'style.min.css' file is available * and use it if HOOT_DEBUG is disabled. * * @since 3.0.0 * @access public * @param string $stylesheet_uri The URI of the active theme's stylesheet. * @param string $stylesheet_dir_uri The directory URI of the active theme's stylesheet. * @return string $stylesheet_uri */ function hoot_min_stylesheet_uri( $stylesheet_uri, $stylesheet_dir_uri ) { if ( defined( 'HOOT_DEBUG' ) ) $loadminified = ( HOOT_DEBUG ) ? false : true; else $loadminified = hoot_get_mod( 'load_minified', 0 ); /* Use the .min stylesheet if available. */ if ( $loadminified ) { /* Remove the stylesheet directory URI from the file name. */ $stylesheet = str_replace( trailingslashit( $stylesheet_dir_uri ), '', $stylesheet_uri ); /* Change the stylesheet name to 'style.min.css'. */ $stylesheet = str_replace( '.css', ".min.css", $stylesheet ); /* If the stylesheet exists in the stylesheet directory, set the stylesheet URI to the dev stylesheet. */ if ( file_exists( trailingslashit( get_stylesheet_directory() ) . $stylesheet ) ) $stylesheet_uri = esc_url( trailingslashit( $stylesheet_dir_uri ) . $stylesheet ); } /* Return the theme stylesheet. */ return $stylesheet_uri; } /** * Filters 'locale_stylesheet_uri' with a more robust version for checking locale/language/region/direction * stylesheets. * * @since 3.0.0 * @access public * @param string $stylesheet_uri * @return string */ function hoot_locale_stylesheet_uri( $stylesheet_uri ) { $locale_style = hoot_get_locale_style(); return $locale_style ? esc_url( $locale_style ) : $stylesheet_uri; } /** * Searches for a locale stylesheet. This function looks for stylesheets in the 'css' folder in the following * order: 1) $lang-$region.css, 2) $region.css, 3) $lang.css, and 4) $text_direction.css. It first checks * the child theme for these files. If they are not present, it will check the parent theme. This is much * more robust than the WordPress locale stylesheet, allowing for multiple variations and a more flexible * hierarchy. * * @since 3.0.0 * @access public * @return string */ function hoot_get_locale_style() { $styles = array(); // Get the locale, language, and region. $locale = strtolower( str_replace( '_', '-', get_locale() ) ); $lang = strtolower( hoot_get_language() ); $region = strtolower( hoot_get_region() ); $styles[] = "css/{$locale}.css"; if ( $region !== $locale ) $styles[] = "css/{$region}.css"; if ( $lang !== $locale ) $styles[] = "css/{$lang}.css"; $styles[] = is_rtl() ? 'css/rtl.css' : 'css/ltr.css'; foreach ( $styles as $style ) { $uri = hoot_locate_style( $style ); if ( !empty( $uri ) ) return $uri; } return ''; } /** * Registers the admin stylesheet files. The function does not load the stylesheet. * It merely registers it with WordPress. * * @since 3.0.0 * @access public * @return void */ function hoot_register_adminstyles() { if ( apply_filters( 'hoot_force_theme_fa', true, 'admin' ) ) wp_deregister_style( 'font-awesome' ); // Bug Fix for plugins using older font-awesome library $style_uri = hoot_locate_style( hoot_data()->liburi . 'fonticons/font-awesome' ); wp_register_style( 'font-awesome', $style_uri, false, '5.0.10' ); }