`­…{˜ëmu{˜à­…{˜Pömu{˜€®…{˜0nu{˜`¯…{˜(nu{˜@°…{˜#nu{˜À°…{˜3nu{˜ ±…{˜Dnu{˜€±…{˜Pnu{˜à±…{˜^nu{˜@²…{˜(mnu{˜ ²…{˜ znu{˜@³…{˜‡nu{˜ ³…{˜X“nu{˜@´…{˜ Ÿnu{˜e€Àt{˜f€ypu{˜j€„pu{˜k€”pu{˜z€¤pu{˜{€¾pu{˜g€Øpu{˜|€òpu{˜h€qu{˜i€"qu{˜l€;qu{˜m€Lqu{˜‚€\qu{˜n€°åu{˜€€jqu{˜o€Pv{˜p€}qu{˜u€q½u{˜v€˜Ãt{˜}€‘qu{˜~€ qu{˜€µqu{˜w€Äqu{˜x€‚mu{˜€xv{˜6tu{˜Btu{˜Ptu{˜]tu{˜ptu{˜{tu{˜tu{˜ tu{˜Hou{˜¾u{˜vñt{˜®tu{˜¹tu{˜Êtu{˜Øtu{˜átu{˜ítu{˜n åd{˜°åd{˜Àåd{˜Påd{˜ðäd{˜d€;vu{˜e€œÿt{˜f€Mvu{˜g€Zvu{˜t€gvu{˜h€xvu{˜u€Švu{˜v€vu{˜€¯vu{˜s€¾vu{˜ƒ€Ûvu{˜w€òvu{˜x€ wu{˜„€'wu{˜€€„t{˜y€>wu{˜z€Rwu{˜{€mwu{˜€wu{˜i€Žwu{˜j€›wu{˜k€©wu{˜l€·wu{˜m€Åwu{˜|€ßwu{˜}€òwu{˜o€xu{˜p€ xu{˜‚€xu{˜q€W‰t{˜r€(xu{˜~€?xu{˜n€j‰t{˜ÿÿÿÿÿÿÿÿÀ·…{˜)zu{˜ÿÿÿÿÿÿÿÿ¸…{˜:zu{˜À¸…{˜ๅ{˜@¸…{˜Jzu{˜€º…{˜ »…{˜ º…{˜Yzu{˜`»…{˜ezu{˜à»…{˜à{u{˜d€U|u{˜y€i|u{˜e€çÏt{˜f€®»u{˜g€|u{˜x€èv{˜h€òu{˜i€|u{˜p€©|u{˜j€¶|u{˜k€Ã|u{˜l€Ñ|u{˜m€Ü|u{˜n€ñ|u{˜o€}u{˜q€}u{˜r€ƒ‚t{˜t€)}u{˜v€qÄt{˜w€B}u{˜ÿÿÿÿÿÿÿÿ`¼…{˜u}u{˜ÿÿÿÿÿÿÿÿ ¼…{˜‡}u{˜༅{˜ —}u{˜€½…{˜¤}u{˜ཅ{˜8²}u{˜¿…{˜(Æ}u{˜€¿…{˜€_ƒ{˜0Ø}u{˜ À…{˜é}u{˜ À…{˜ø}u{˜Á…{˜À_ƒ{˜H~u{˜ Â…{˜0"~u{˜€Ã…{˜ Ä…{˜ Ã…{˜`ƒ{˜8™uu{˜Ðe{˜ÐÐe{˜ribe-theme-child-' . $current_theme->get_template() ); } else { $classes[] = sanitize_html_class( 'tribe-theme-' . $current_theme->get_template() ); } /** * Filters the list of classes we're adding. * * @since 4.14.0 * * @param array $classes An array of classes in the shape `[ => boolean ]`. */ return apply_filters( 'tribe_compatibility_classes', $classes ); } /** * Returns a list of themes registered for compatibility with our Views. * * @since 4.14.0 * * @return array An array of the themes registered. */ public static function get_registered_themes() { /** * Filters the list of themes that are registered for compatibility. * * @since 4.14.0 * * @param array $registered An array of views in the shape `[ ]`. */ return (array) apply_filters( 'tribe_theme_compatibility_registered', self::$themes ); } /** * Returns an array of active themes (parent and child). * * @since 4.14.0 * * @return array $themes An array in the format [ 'parent' => 'theme name', 'child' => 'theme name' ]. * Empty array if none found. */ public static function get_active_themes() { $themes = []; $current_theme = static::get_current_theme( true ); if ( empty( $current_theme ) ) { return $themes; } $parent_theme = $current_theme->parent(); // No parent theme. if ( empty( $parent_theme ) ) { $themes['parent'] = strtolower( $current_theme->get_template() ); return $themes; } $themes['parent'] = strtolower( $parent_theme->get_template() ); $child_theme = $current_theme->get( 'stylesheet' ); // if the 2 options are the same, then there is no child theme. if ( $child_theme !== $parent_theme ) { $themes['child'] = strtolower( $child_theme ); } return $themes; } /** * Get the current theme. * * @since 4.14.0 * * @param boolean $object Pass true if you want the theme object returned instead of the name. * * @return string|object|boolean Will return the theme name by default. * Will return the theme object if passed boolean true as the parameter. * Will return boolean false if the theme is not found. */ public static function get_current_theme( $object = false ) { $current_theme = wp_get_theme(); // If we can't get it for some reason... if ( ! $current_theme instanceof WP_Theme || ! $current_theme->exists() ) { return false; } if ( $object ) { return $current_theme; } return $current_theme->get_template(); } /** * Checks if the provided theme is active. * * @since 4.14.0 * * @param string $theme The theme name like 'avada' or 'twentytwenty', * * @return boolean True if the requested theme is active, * false if the current theme could not be found or is not the requested theme. */ public static function is_active_theme( $check ) { $current_theme = wp_get_theme(); // Current theme is not if ( ! $current_theme instanceof \WP_Theme ) { $theme = false; } elseif ( ! $current_theme->exists() ) { $theme = false; } else { $theme = $current_theme->get_template(); } return ! empty( $theme ) && strtolower( $check ) === strtolower( $theme ); } }