on' => 'ue8ed'),
'linkedin' => array( 'font' =>'entypo-fontello', 'icon' => 'ue8fc', 'display_name' => 'LinkedIn' ),
'instagram' => array( 'font' =>'entypo-fontello', 'icon' => 'uf16d'),
'pinterest' => array( 'font' =>'entypo-fontello', 'icon' => 'ue8f8'),
'whatsapp' => array( 'font' =>'entypo-fontello', 'icon' => 'uf232', 'display_name' => 'WhatsApp' ),
'skype' => array( 'font' =>'entypo-fontello', 'icon' => 'ue90d'),
'tumblr' => array( 'font' =>'entypo-fontello', 'icon' => 'ue8fa'),
'twitter' => array( 'font' =>'entypo-fontello', 'icon' => 'ue8f1'),
'vimeo' => array( 'font' =>'entypo-fontello', 'icon' => 'ue8ef'),
'rss' => array( 'font' =>'entypo-fontello', 'icon' => 'ue853'),
'yelp' => array( 'font' =>'entypo-fontello', 'icon' => 'uf1e9'),
'youtube' => array( 'font' =>'entypo-fontello', 'icon' => 'uf16a'),
'xing' => array( 'font' =>'entypo-fontello', 'icon' => 'ue923'),
'soundcloud' => array( 'font' =>'entypo-fontello', 'icon' => 'ue913'),
'five_100_px' => array( 'font' =>'entypo-fontello', 'icon' => 'ue91d'),
'vk' => array( 'font' =>'entypo-fontello', 'icon' => 'ue926'),
'reddit' => array( 'font' =>'entypo-fontello', 'icon' => 'ue927'),
'digg' => array( 'font' =>'entypo-fontello', 'icon' => 'ue928'),
'delicious' => array( 'font' =>'entypo-fontello', 'icon' => 'ue929'),
'mail' => array( 'font' =>'entypo-fontello', 'icon' => 'ue805'),
//woocomemrce
'cart' => array( 'font' =>'entypo-fontello', 'icon' => 'ue859'),
'details' => array( 'font' =>'entypo-fontello', 'icon' => 'ue84b'),
//bbpress
'supersticky' => array( 'font' =>'entypo-fontello', 'icon' => 'ue808'),
'sticky' => array( 'font' =>'entypo-fontello', 'icon' => 'ue809'),
'one_voice' => array( 'font' =>'entypo-fontello', 'icon' => 'ue83b'),
'multi_voice' => array( 'font' =>'entypo-fontello', 'icon' => 'ue83c'),
'closed' => array( 'font' =>'entypo-fontello', 'icon' => 'ue824'),
'sticky_closed' => array( 'font' =>'entypo-fontello', 'icon' => 'ue808\ue824'),
'supersticky_closed' => array( 'font' =>'entypo-fontello', 'icon' => 'ue809\ue824'),
//navigation, slider & controls
'play' => array( 'font' =>'entypo-fontello', 'icon' => 'ue897'),
'pause' => array( 'font' =>'entypo-fontello', 'icon' => 'ue899'),
'next' => array( 'font' =>'entypo-fontello', 'icon' => 'ue879'),
'prev' => array( 'font' =>'entypo-fontello', 'icon' => 'ue878'),
'next_big' => array( 'font' =>'entypo-fontello', 'icon' => 'ue87d'),
'prev_big' => array( 'font' =>'entypo-fontello', 'icon' => 'ue87c'),
'close' => array( 'font' =>'entypo-fontello', 'icon' => 'ue814'),
'reload' => array( 'font' =>'entypo-fontello', 'icon' => 'ue891'),
'mobile_menu' => array( 'font' =>'entypo-fontello', 'icon' => 'ue8a5'),
//image hover overlays
'ov_external' => array( 'font' =>'entypo-fontello', 'icon' => 'ue832'),
'ov_image' => array( 'font' =>'entypo-fontello', 'icon' => 'ue869'),
'ov_video' => array( 'font' =>'entypo-fontello', 'icon' => 'ue897'),
//misc
'search' => array( 'font' =>'entypo-fontello', 'icon' => 'ue803'),
'info' => array( 'font' =>'entypo-fontello', 'icon' => 'ue81e'),
'clipboard' => array( 'font' =>'entypo-fontello', 'icon' => 'ue8d1'),
'scrolltop' => array( 'font' =>'entypo-fontello', 'icon' => 'ue876'),
'scrolldown' => array( 'font' =>'entypo-fontello', 'icon' => 'ue877'),
'bitcoin' => array( 'font' =>'entypo-fontello', 'icon' => 'ue92a'),
'locked_option' => array( 'font' =>'entypo-fontello', 'icon' => 'ue824' ),
));
/*
* a small array that contains admin notices that can, for example, be called after an update
* just set the db option avia_admin_notice to contain the key of the notice you want to display
* eg: update_option('avia_admin_notice', 'performance_update');
*
* classes: error, warning, success, info
* msg: whatever floats your boat :D
*/
$avia_config['admin_notices'] = array(
//default update success
'update_success' => array('class'=>'success', 'msg' => __('Enfold update was successful! ','avia_framework')),
//update to version 4.3 - performance update. display notice and link to blog post
'performance_update' => array('class'=>'info', 'msg' => "Attention: The last Enfold update added a lot of performance options. Make sure to read more about it here
If you are running a caching plugin please make sure to reset your cached files, since the CSS and JS file structure of the theme changed heavily"
),
//update to version 4.4 - gdpr update. display notice and link to blog post
'gdpr_update' => array('class'=>'info', 'msg' => "Attention: Enfold was updated for GDPR compliance. Make sure to read more about it here"
),
'gdpr_update_2' => array(
'class' => 'info',
'msg' => 'Attention: Enfold GDPR compliance has been extended to support "Must Opt In". Options and shortcodes have been extended. Please read the description on the theme options tab carefully and check the extended documentation here.'
)
//more to come...
);
add_theme_support( 'automatic-feed-links' );
##################################################################
# Frontend Stuff necessary for the theme:
##################################################################
/*
* Register frontend javascripts:
*/
if( ! function_exists( 'avia_register_frontend_scripts' ) )
{
if( ! is_admin() )
{
add_action( 'wp_enqueue_scripts', 'avia_register_frontend_scripts' );
}
function avia_register_frontend_scripts()
{
global $avia_config;
$vn = avia_get_theme_version();
$options = avia_get_option();
$template_url = get_template_directory_uri();
$child_theme_url = get_stylesheet_directory_uri();
//register js
wp_enqueue_script( 'avia-compat', $template_url . '/js/avia-compat.js', array(), $vn, false ); //needs to be loaded at the top to prevent bugs
wp_enqueue_script( 'avia-default', $template_url . '/js/avia.js', array( 'jquery' ), $vn, true );
wp_enqueue_script( 'avia-hamburger-menu', $template_url . '/js/avia-snippet-hamburger-menu.js', array( 'jquery', 'avia-default' ), $vn, true );
wp_enqueue_script( 'avia-shortcodes', $template_url . '/js/shortcodes.js', array( 'jquery', 'avia-default' ), $vn, true );
wp_enqueue_script( 'jquery' );
//register styles
wp_register_style( 'avia-style' , $child_theme_url."/style.css", array(), $vn, 'all' ); //only include in childthemes. has no purpose in main theme
wp_register_style( 'avia-custom', $template_url."/css/custom.css", array(), $vn, 'all' );
wp_enqueue_style( 'avia-grid' , $template_url."/css/grid.css", array(), $vn, 'all' );
wp_enqueue_style( 'avia-base' , $template_url."/css/base.css", array('avia-grid'), $vn, 'all' );
wp_enqueue_style( 'avia-layout', $template_url."/css/layout.css", array('avia-base'), $vn, 'all' );
wp_enqueue_style( 'avia-scs', $template_url."/css/shortcodes.css", array('avia-layout'), $vn, 'all' );
/************************************************************************
Conditional style and script calling, based on theme options or other conditions
*************************************************************************/
//lightbox inclusion
$condition = ! empty( $avia_config['use_standard_lightbox'] ) && ( 'disabled' != $avia_config['use_standard_lightbox'] );
avia_enqueue_style_conditionally( $condition, 'avia-popup-css', $template_url . '/js/aviapopup/magnific-popup.css', array( 'avia-layout' ), $vn, 'screen' );
avia_enqueue_style_conditionally( $condition, 'avia-lightbox', $template_url . '/css/avia-snippet-lightbox.css', array( 'avia-layout' ), $vn, 'screen' );
avia_enqueue_script_conditionally( $condition, 'avia-popup-js', $template_url . '/js/aviapopup/jquery.magnific-popup.min.js', array( 'jquery' ), $vn, true );
avia_enqueue_script_conditionally( $condition, 'avia-lightbox-activation', $template_url . '/js/avia-snippet-lightbox.js', array( 'avia-default' ), $vn, true );
//mega menu inclusion (only necessary with sub menu items)
$condition = ( avia_get_submenu_count('avia') > 0 );
avia_enqueue_script_conditionally( $condition, 'avia-megamenu', $template_url . '/js/avia-snippet-megamenu.js', array( 'avia-default' ), $vn, true );
//sidebar menu inclusion (only necessary when header position is set to be a sidebar)
$condition = (isset($options['header_position']) && $options['header_position'] != "header_top");
avia_enqueue_script_conditionally( $condition , 'avia-sidebarmenu', $template_url."/js/avia-snippet-sidebarmenu.js", array('avia-default'), $vn, true);
//sticky header with header size calculator
$condition = (isset($options['header_position']) && $options['header_position'] == "header_top");
$condition2 = (isset($options['header_sticky']) && $options['header_sticky'] == "header_sticky") && $condition;
avia_enqueue_script_conditionally( $condition2 , 'avia-sticky-header', $template_url."/js/avia-snippet-sticky-header.js", array('avia-default'), $vn, true);
// footer - curtain behaviour
$condition = ( isset( $options['color-body_style'] ) && $options['color-body_style'] == 'stretched' );
avia_enqueue_script_conditionally( $condition, 'avia-footer-effects', $template_url . '/js/avia-snippet-footer-effects.js', array( 'avia-default' ), $vn, true );
//site preloader
$condition = (isset($options['preloader']) && $options['preloader'] == "preloader");
avia_enqueue_script_conditionally( $condition , 'avia-siteloader-js', $template_url."/js/avia-snippet-site-preloader.js", array('avia-default'), $vn, true, false);
avia_enqueue_style_conditionally( $condition , 'avia-siteloader', $template_url."/css/avia-snippet-site-preloader.css", array('avia-layout'), $vn, 'screen', false);
//load widget assets only if we got active widgets
$condition = (avia_get_active_widget_count() > 0);
avia_enqueue_script_conditionally( $condition , 'avia-widget-js' , $template_url."/js/avia-snippet-widget.js", array('avia-default'), $vn, true);
avia_enqueue_style_conditionally( $condition , 'avia-widget-css', $template_url."/css/avia-snippet-widget.css", array('avia-layout'), $vn, 'screen');
//load mediaelement js
$opt_mediaelement = isset( $options['disable_mediaelement'] ) ? $options['disable_mediaelement'] : '';
$condition = true;
if( 'force_mediaelement' != $opt_mediaelement )
{
$condition = ( $opt_mediaelement != "disable_mediaelement" ) && av_video_assets_required();
}
/**
* Allow to force loading of WP media element for 3rd party plugins. Nedded for wp_enqueue_media() to load properly.
*
* @since 4.1.2
* @param boolean $condition
* @param array $options
* @return boolean
*/
$condition = apply_filters( 'avf_enqueue_wp_mediaelement', $condition, $options );
$condition2 = ( version_compare( get_bloginfo( 'version' ), '4.9', '>=' ) ) && $condition;
avia_enqueue_script_conditionally( $condition , 'wp-mediaelement');
avia_enqueue_style_conditionally( $condition2 , 'wp-mediaelement'); //With WP 4.9 we need to load the stylesheet seperately
//comment reply script
global $post;
$condition = !( isset($options['disable_blog']) && $options['disable_blog'] == "disable_blog" ) && $post && comments_open();
$condition = ( is_singular() && get_option( 'thread_comments' ) ) && $condition;
avia_enqueue_script_conditionally( $condition , 'comment-reply');
//rtl inclusion
avia_enqueue_style_conditionally( is_rtl() , 'avia-rtl', $template_url."/css/rtl.css", array(), $vn, 'all');
//disable jquery migrate if no plugins are active (enfold does not need it) or if user asked for it in optimization options
$condition = avia_count_active_plugins() == 0 || (isset($options['disable_jq_migrate']) && $options['disable_jq_migrate'] != "disable_jq_migrate");
if(!$condition) avia_disable_query_migrate();
//move jquery to footer if no unkown plugins are active
if(av_count_untested_plugins() == 0 || (isset($options['jquery_in_footer']) && $options['jquery_in_footer'] == "jquery_in_footer") )
{
av_move_jquery_into_footer();
}
/************************************************************************
Inclusion of the dynamic stylesheet
*************************************************************************/
global $avia;
$safe_name = avia_backend_safe_string($avia->base_data['prefix']);
$safe_name = apply_filters('avf_dynamic_stylesheet_filename', $safe_name);
if( get_option('avia_stylesheet_exists'.$safe_name) == 'true' )
{
$avia_upload_dir = wp_upload_dir();
/**
* Change the default dynamic upload url
*
* @since 4.4
*/
$avia_dyn_upload_path = apply_filters('avf_dyn_stylesheet_dir_url', $avia_upload_dir['baseurl'] . '/dynamic_avia' );
$avia_dyn_upload_path = trailingslashit( $avia_dyn_upload_path );
if( is_ssl() )
{
$avia_dyn_upload_path = str_replace( "http://", "https://", $avia_dyn_upload_path );
}
/**
* Change the default dynamic stylesheet name
*
* @since 4.4
*/
$avia_dyn_stylesheet_url = apply_filters( 'avf_dyn_stylesheet_file_url', $avia_dyn_upload_path . $safe_name . '.css' );
$version_number = get_option( 'avia_stylesheet_dynamic_version' . $safe_name );
if( empty( $version_number ) )
{
$version_number = $vn;
}
wp_enqueue_style( 'avia-dynamic', $avia_dyn_stylesheet_url, array(), $version_number, 'all' );
}
wp_enqueue_style( 'avia-custom');
if($child_theme_url != $template_url)
{
wp_enqueue_style( 'avia-style');
}
}
}
if(!function_exists('avia_remove_default_video_styling'))
{
if(!is_admin()){
add_action('wp_footer', 'avia_remove_default_video_styling', 1);
}
function avia_remove_default_video_styling()
{
/**
* remove default style for videos
*
* With WP 4.9 we need to load the stylesheet seperately - therefore we must not remove it
*/
if( version_compare( get_bloginfo( 'version' ), '4.9', '<' ) )
{
wp_dequeue_style( 'mediaelement' );
}
// wp_dequeue_script( 'wp-mediaelement' );
// wp_dequeue_style( 'wp-mediaelement' );
}
}
/*
* Activate native wordpress navigation menu and register a menu location
*/
if(!function_exists('avia_nav_menus'))
{
function avia_nav_menus()
{
global $avia_config, $wp_customize;
add_theme_support('nav_menus');
foreach($avia_config['nav_menus'] as $key => $value)
{
//wp-admin\customize.php does not support html code in the menu description - thus we need to strip it
$name = (!empty($value['plain']) && !empty($wp_customize)) ? $value['plain'] : $value['html'];
register_nav_menu($key, THEMENAME.' '.$name);
}
}
$avia_config['nav_menus'] = array( 'avia' => array('html' => __('Main Menu', 'avia_framework')),
'avia2' => array(
'html' => ''.__('Secondary Menu', 'avia_framework').'
('.__('Will be displayed if you selected a header layout that supports a submenu', 'avia_framework').' '.__('here', 'avia_framework').')',
'plain'=> __('Secondary Menu - will be displayed if you selected a header layout that supports a submenu', 'avia_framework')),
'avia3' => array(
'html' => __('Footer Menu
(no dropdowns)', 'avia_framework'),
'plain'=> __('Footer Menu (no dropdowns)', 'avia_framework'))
);
avia_nav_menus(); //call the function immediately to activate
}
/*
* load some frontend functions in folder include:
*/
require_once 'includes/admin/register-portfolio.php'; // register custom post types for portfolio entries
require_once 'includes/admin/register-widget-area.php'; // register sidebar widgets for the sidebar and footer
require_once 'includes/loop-comments.php'; // necessary to display the comments properly
require_once 'includes/helper-template-logic.php'; // holds the template logic so the theme knows which templates to use
require_once 'includes/helper-social-media.php'; // holds some helper functions necessary for twitter and facebook buttons
require_once 'includes/helper-post-format.php'; // holds actions and filter necessary for post formats
require_once 'includes/helper-markup.php'; // holds the markup logic (schema.org and html5)
require_once 'includes/helper-assets.php'; // holds asset managment functions
require_once 'includes/class-avia-custom-pages.php'; // holds management functions for custom pages like 404, maintenance, footer page
if( current_theme_supports( 'avia_conditionals_for_mega_menu' ) )
{
require_once 'includes/helper-conditional-megamenu.php'; // holds the walker for the responsive mega menu
}
require_once 'includes/helper-responsive-megamenu.php'; // holds the walker for the responsive mega menu
//adds the plugin initalization scripts that add styles and functions
require_once( 'config-gutenberg/class-avia-gutenberg.php' ); // gutenberg - might be necessary to move when part of WP core
if( ! current_theme_supports( 'avia_exclude_bbPress' ) )
{
require_once( 'config-bbpress/config.php' ); //compatibility with bbpress forum plugin
}
require_once( 'config-templatebuilder/config.php' ); //templatebuilder plugin
if( ! current_theme_supports( 'avia_exclude_GFForms' ) )
{
require_once( 'config-gravityforms/config.php' ); //compatibility with gravityforms plugin
}
if( ! current_theme_supports( 'avia_exclude_pojo_accessibility' ) )
{
require_once( 'config-pojo-accessibility/class-avia-pojo-accessibility.php' ); //compatibility with "One Click Accessibility" plugin
}
if( ! current_theme_supports( 'avia_exclude_wp_accessibility' ) )
{
require_once( 'config-wp-accessibility/class-avia-wp-accessibility.php' ); //compatibility with "WP Accessibility" plugin
}
if( ! current_theme_supports( 'avia_exclude_WooCommerce' ) )
{
require_once( 'config-woocommerce/woo-loader.php' ); //compatibility with woocommerce plugin
}
if( ! current_theme_supports( 'avia_exclude_wpSEO' ) )
{
require_once( 'config-wordpress-seo/config.php' ); //compatibility with Yoast WordPress SEO plugin
}
if( ! current_theme_supports( 'avia_exclude_menu_exchange' ) )
{
require_once( 'config-menu-exchange/config.php' ); //compatibility with Zen Menu Logic and Themify_Conditional_Menus plugin
}
if( ! current_theme_supports( 'avia_exclude_relevanssi' ) )
{
require_once( 'config-relevanssi/class-avia-relevanssi.php' ); //compatibility with relevanssi plugin
}
if( ! current_theme_supports( 'deactivate_tribe_events_calendar' ) )
{
require_once( 'config-events-calendar/config.php' ); //compatibility with the Events Calendar plugin
}
if( ! current_theme_supports( 'avia_exclude_instagram_feed' ) )
{
require_once( 'config-instagram-feed/class-avia-instagram-feed.php' ); //compatibility with Smash Balloon Instagram Feed plugin
}
if( ! current_theme_supports( 'avia_exclude_leaflet_map' ) )
{
require_once( 'config-leaflet-maps/class-avia-leaflet-maps.php' ); //compatibility with Leflet Maps plugin
}
// if(is_admin())
require_once( 'includes/admin/helper-compat-update.php'); // include helper functions for new versions
/*
* dynamic styles for front and backend
*/
if(!function_exists('avia_custom_styles'))
{
function avia_custom_styles()
{
require_once( 'includes/admin/register-dynamic-styles.php' ); // register the styles for dynamic frontend styling
avia_prepare_dynamic_styles();
}
add_action('init', 'avia_custom_styles', 20);
add_action('admin_init', 'avia_custom_styles', 20);
}
/*
* activate framework widgets
*/
if( ! function_exists( 'avia_register_avia_widgets' ) )
{
function avia_register_avia_widgets()
{
register_widget( 'avia_newsbox' );
register_widget( 'avia_portfoliobox' );
register_widget( 'avia_socialcount' );
register_widget( 'avia_partner_widget' );
register_widget( 'avia_google_maps' );
register_widget( 'avia_fb_likebox' );
register_widget( 'avia_instagram_widget' );
register_widget( 'avia_combo_widget' );
register_widget( 'avia_auto_toc' );
}
avia_register_avia_widgets(); //call the function immediately to activate
}
/*
* add post format options
*/
add_theme_support( 'post-formats', array( 'link', 'quote', 'gallery', 'video', 'image', 'audio' ) );
/*
* Remove the default shortcode function, we got new ones that are better ;)
*/
add_theme_support( 'avia-disable-default-shortcodes', true );
/*
* compat mode for easier theme switching from one avia framework theme to another
*/
add_theme_support( 'avia_post_meta_compat' );
/*
* make sure that enfold widgets dont use the old slideshow parameter in widgets, but default post thumbnails
*/
add_theme_support( 'force-post-thumbnails-in-widget' );
/*
* display page titles via wordpress default output
*
* @since 3.6
*/
function av_theme_slug_setup()
{
add_theme_support( 'title-tag' );
}
add_action( 'after_setup_theme', 'av_theme_slug_setup' );
/*title fallback (up to WP 4.1)*/
if ( ! function_exists( '_wp_render_title_tag' ) )
{
function av_theme_slug_render_title()
{
echo '