File: //var/www/html/triad-infosec/wp-content/themes/Avada/includes/bootstrap.php
<?php
/**
* Extra files & functions are hooked here.
*
* Functions moved from functions.php file in v6.0.
*
* @package Avada
* @subpackage Core
* @since 6.0
*/
// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
exit( 'Direct script access denied.' );
}
$template_dir_path = wp_normalize_path( get_template_directory() );
/**
* Include Fusion-Library.
*/
$library_path = defined( 'FUSION_LIBRARY_DEV_MODE' ) && defined( 'FUSION_LIBRARY_PATH' ) && file_exists( FUSION_LIBRARY_PATH . '/fusion-library.php' ) ? FUSION_LIBRARY_PATH : $template_dir_path . '/includes/lib';
require_once $library_path . '/fusion-library.php';
/**
* Include Avada app.
*/
require_once $template_dir_path . '/includes/avada-app/fusion-panel.php';
/**
* Include the main Avada class.
*/
require_once $template_dir_path . '/includes/class-avada.php';
/**
* Define basic properties in the Avada class.
*/
Avada::$template_dir_path = $template_dir_path;
Avada::$template_dir_url = get_template_directory_uri();
Avada::$stylesheet_dir_path = wp_normalize_path( get_stylesheet_directory() );
Avada::$stylesheet_dir_url = get_stylesheet_directory_uri();
/**
* Include the autoloader.
*/
require_once Avada::$template_dir_path . '/includes/class-avada-autoload.php';
/**
* Instantiate the autoloader.
*/
new Avada_Autoload();
/**
* Must-use Plugins.
*/
require_once Avada::$template_dir_path . '/includes/plugins/multiple_sidebars.php';
require_once Avada::$template_dir_path . '/includes/plugins/post-link-plus.php';
// Load dynamic css for plugins.
$avada_glob_filenames = glob( Avada::$template_dir_path . '/includes/typography/*.php', GLOB_NOSORT );
foreach ( $avada_glob_filenames as $filename ) {
require_once wp_normalize_path( $filename );
}
global $wp_customize;
/**
* If Avada-Builder is installed, add the options.
*/
if ( ( ( defined( 'FUSION_BUILDER_PLUGIN_DIR' ) && is_admin() ) || ! is_admin() ) && ( ! is_customize_preview() && ! $wp_customize ) ) {
new Fusion_Builder_Redux_Options();
}
/**
* Load Fusion functions and make them available for later usage.
*/
require_once Avada::$template_dir_path . '/includes/fusion-functions.php';
/**
* Load global color class.
*/
require_once Avada::$template_dir_path . '/includes/class-awb-global-colors.php';
/**
* Load global typography class.
*/
require_once Avada::$template_dir_path . '/includes/class-awb-global-typography.php';
/**
* Load Adobe typography class.
*/
require_once Avada::$template_dir_path . '/includes/class-awb-adobe-typography.php';
/**
* Make sure language-all works correctly.
* Uses Fusion_Multilingual action.
*
* @since 5.1
*/
function avada_set_language_is_all() {
Avada::set_language_is_all( true );
}
add_action( 'fusion_library_set_language_is_all', 'avada_set_language_is_all' );
/**
* Make sure the Fusion_Multilingual class has been instantiated.
*/
if ( ! property_exists( fusion_library(), 'multilingual' ) || ! fusion_library()->multilingual ) {
fusion_library()->multilingual = new Fusion_Multilingual();
}
/**
* Instantiate Avada_Upgrade classes.
* Don't instantiate the class when DOING_AJAX to avoid issues
* with the WP HeartBeat API.
*/
if ( ! function_exists( 'fusion_doing_ajax' ) ) {
/**
* Wrapper function for wp_doing_ajax, which was introduced in WP 4.7.
*
* @since 5.1.5
*/
function fusion_doing_ajax() {
if ( function_exists( 'wp_doing_ajax' ) ) {
return wp_doing_ajax();
}
return defined( 'DOING_AJAX' ) && DOING_AJAX;
}
}
if ( ! fusion_doing_ajax() ) {
Avada_Upgrade::get_instance();
}
/**
* Instantiates the Avada class.
* Make sure the class is properly set-up.
* The Avada class is a singleton
* so we can directly access the one true Avada object using this function.
*
* @return Avada
*/
function Avada() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName
return Avada::get_instance();
}
Avada();
/**
* Instantiate the Avada_Multiple_Featured_Images object.
*/
new Avada_Multiple_Featured_Images();
/**
* Instantiate Avada_Admin_Notices.
*/
new Avada_Admin_Notices();
/**
* Instantiate Avada_Page_Options.
*/
new Avada_Page_Options();
/**
* Instantiate Avada_Portfolio.
* This is only needed on the frontend, doesn't do anything for the dashboard.
*/
if ( ! is_admin() ) {
new Avada_Portfolio();
}
/**
* Instantiate Avada_Social_Icons.
* This is only needed on the frontend, doesn't do anything for the dashboard.
*/
global $social_icons;
if ( ! is_admin() ) {
if ( class_exists( 'Fusion_Social_Icons' ) ) {
$social_icons = new Fusion_Social_Icons();
} else {
$social_icons = false;
}
}
/**
* Instantiate Avada_fonts.
* Only do this while in the dashboard, not needed on the frontend.
*/
if ( is_admin() || ( function_exists( 'fusion_is_builder_frame' ) && fusion_is_builder_frame() ) ) {
new Avada_Fonts();
}
/**
* Instantiate Avada_Scripts.
*/
new Avada_Scripts();
/**
* Instantiate Avada_Layout_bbPress.
* We only need to do this for the frontend, when bbPress is installed.
*/
if ( ! is_admin() && class_exists( 'bbPress' ) ) {
new Avada_Layout_bbPress();
}
/**
* Instantiate Avada_EventsCalendar
* We only need to do this on the frontend if Events Calendar is installed or on customizer preview.
*/
global $avada_events_calender;
if ( ( ! is_admin() || is_customize_preview() || fusion_doing_ajax() ) && class_exists( 'Tribe__Events__Main' ) && class_exists( 'Tribe\Events\Views\V2\Template_Bootstrap' ) ) {
$avada_events_calender = new Avada_EventsCalendar();
}
/**
* The arguments for the Avada options panel.
*
* @since 6.0
*/
global $avada_avadaredux_args;
// Set vars for i18n handling.
$option_name = Avada::get_option_name();
$is_language_all = Avada::get_language_is_all();
$default_language = Fusion_Multilingual::get_default_language();
if ( $is_language_all && 'fusion_options' === $option_name && 'en' !== $default_language ) {
$option_name = Avada::get_option_name() . '_' . $default_language;
}
$avada_avadaredux_args = [
'is_language_all' => $is_language_all,
'default_language' => $default_language,
'option_name' => $option_name,
'original_option_name' => Avada::get_original_option_name(),
'version' => Avada()->get_theme_version(),
'textdomain' => 'Avada',
'disable_dependencies' => (bool) ( '0' === Avada()->settings->get( 'dependencies_status' ) ),
'display_name' => 'Avada',
'menu_title' => 'Global Options',
'page_title' => 'Global Options',
'global_variable' => 'fusion_fusionredux_options',
'page_parent' => 'themes.php',
'page_slug' => 'avada_options',
'menu_type' => 'submenu',
'page_permissions' => 'manage_options',
];
// Instantiate the Avada_Admin class.
if ( is_admin() ) {
new Avada_Admin();
} elseif ( ! is_customize_preview() ) {
// Instantiate the Avada_Admin_Bar class.
new Avada_Admin_Bar();
}
/**
* Conditionally Instantiate Avada_AvadaRedux.
*/
$load_avadaredux = false;
$load_avada_gfonts = true;
if ( is_admin() && isset( $_GET['page'] ) && 'avada_options' === $_GET['page'] ) { // phpcs:ignore WordPress.Security.NonceVerification
$load_avadaredux = true;
}
$http_referer = fusion_get_referer();
if ( $http_referer && false !== strpos( $http_referer, 'avada_options' ) ) {
$load_avadaredux = true;
$load_avada_gfonts = true;
}
$avadaredux_export = ( isset( $_GET['action'] ) && false !== strpos( $_GET['action'], 'fusionredux_link_options-fusion_options' ) && isset( $_GET['secret'] ) && '' !== $_GET['secret'] ) ? true : false; // phpcs:ignore WordPress.Security.NonceVerification, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
if ( $avadaredux_export ) {
$load_avadaredux = true;
$load_avada_gfonts = false;
$avada_avadaredux_args['option_name'] = str_replace( 'fusionredux_link_options-', '', $_GET['action'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
}
if ( fusion_doing_ajax() && isset( $_POST['action'] ) && 'fusion_reset_all_caches' === $_POST['action'] && isset( $_POST['nonce'] ) ) {
$load_avadaredux = true;
}
if ( $load_avadaredux && current_user_can( apply_filters( 'awb_role_manager_access_capability', 'manage_options', 'awb_global_options' ) ) ) {
$avada_avadaredux = new Avada_AvadaRedux( $avada_avadaredux_args );
}
if ( function_exists( 'Fusion_App' ) && Fusion_App()->get_builder_status() ) {
$load_avada_gfonts = false;
}
if ( ! is_admin() && $load_avada_gfonts ) {
Avada_Google_Fonts::get_instance();
}
if ( ! is_admin() ) {
AWB_Google_Recaptcha::get_instance();
}
new Fusion_Dynamic_CSS_From_Options();
/*
* Include the TGM configuration
* We only need this while on the dashboard.
*/
if ( is_admin() ) {
require_once Avada::$template_dir_path . '/includes/class-avada-tgm-plugin-activation.php';
require_once Avada::$template_dir_path . '/includes/avada-tgm.php';
}
if ( is_admin() && isset( $_GET['page'] ) && ( 'avada-prebuilt-websites' === $_GET['page'] || 'avada-setup' === $_GET['page'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
require_once Avada::$template_dir_path . '/includes/class-awb-prebuilt-websites.php';
}
/*
* Include deprecated functions
*/
require_once Avada::$template_dir_path . '/includes/deprecated.php';
/**
* Metaboxes
*/
if ( is_admin() ) {
require_once Avada::$template_dir_path . '/includes/metaboxes/metaboxes.php';
}
/**
* Instantiate Avada_System_Status helper class.
*/
if ( is_admin() && ( isset( $_GET['page'] ) && 'avada-status' === sanitize_text_field( wp_unslash( $_GET['page'] ) ) ) || ( fusion_doing_ajax() && isset( $_GET['action'] ) && ( 'fusion_check_api_status' === $_GET['action'] || 'fusion_create_forms_tables' === $_GET['action'] || 'awb_copy_multisite_global_options' === $_GET['action'] ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification
new Avada_System_Status();
}
/**
* Load Maintenance Mode class.
*/
require_once Avada::$template_dir_path . '/includes/class-awb-maintenance-mode.php';
/**
* Instantiate the mega menu framework
*/
$mega_menu_framework = new Avada_Megamenu_Framework();
/**
* Custom Functions
*/
get_template_part( 'includes/custom-functions' );
require_once Avada::$template_dir_path . '/includes/avada-functions.php';
/**
* WPML Config
*/
if ( defined( 'WPML_PLUGIN_FILE' ) || defined( 'ICL_PLUGIN_FILE' ) ) {
require_once Avada::$template_dir_path . '/includes/plugins/wpml.php';
}
/**
* Include the importer
*/
if ( is_admin() ) {
include Avada::$template_dir_path . '/includes/importer/importer.php';
}
/**
* Include WP CLI commands.
*/
if ( defined( 'WP_CLI' ) && WP_CLI ) {
include Avada::$template_dir_path . '/includes/cli/shared.php';
include Avada::$template_dir_path . '/includes/cli/register.php';
include Avada::$template_dir_path . '/includes/cli/plugins.php';
include Avada::$template_dir_path . '/includes/cli/import-demo.php';
include Avada::$template_dir_path . '/includes/cli/apply-patches.php';
}
/**
* Load Woocommerce Configuraion.
*/
if ( class_exists( 'WooCommerce' ) ) {
require_once Avada::$template_dir_path . '/includes/wc-functions.php';
require_once Avada::$template_dir_path . '/includes/class-avada-woocommerce-variations.php';
global $avada_woocommerce;
$avada_woocommerce = new Avada_Woocommerce();
}
if ( class_exists( 'ACF' ) ) {
new AWB_ACF();
}
/**
* The dynamic CSS.
*/
require_once Avada::$template_dir_path . '/includes/dynamic-css.php';
require_once Avada::$template_dir_path . '/includes/dynamic-css-helpers.php';
global $avada_dynamic_css;
$avada_dynamic_css = new Avada_Dynamic_CSS();
/**
* Set the $content_width global.
*/
global $content_width;
if ( ! is_admin() && ( ! isset( $content_width ) || empty( $content_width ) ) ) {
$content_width = (int) Avada()->layout->get_content_width();
}
/**
* Adds a counter span element to links.
*
* @param string $links The links HTML string.
*/
function avada_cat_count_span( $links ) {
preg_match_all( '#\((.*?)\)#', $links, $matches );
if ( ! empty( $matches ) ) {
$i = 0;
foreach ( $matches[0] as $val ) {
$links = str_replace( '</a> ' . $val, ' ' . $val . '</a>', $links );
$links = str_replace( '</a> ' . $val, ' ' . $val . '</a>', $links );
$i++;
}
}
return $links;
}
add_filter( 'get_archives_link', 'avada_cat_count_span' );
add_filter( 'wp_list_categories', 'avada_cat_count_span' );
/**
* Ignore nag messages.
*/
function avada_nag_ignore() {
global $current_user;
$user_id = $current_user->ID;
// If user clicks to ignore the notice, add that to their user meta.
if ( isset( $_GET['fusion_richedit_nag_ignore'] ) && '0' === $_GET['fusion_richedit_nag_ignore'] ) { // phpcs:ignore WordPress.Security.NonceVerification
add_user_meta( $user_id, 'fusion_richedit_nag_ignore', 'true', true );
}
// If user clicks to ignore the notice, add that to their user meta.
if ( isset( $_GET['avada_uber_nag_ignore'] ) && '0' === $_GET['avada_uber_nag_ignore'] ) { // phpcs:ignore WordPress.Security.NonceVerification
update_option( 'avada_ubermenu_notice', true );
update_option( 'avada_ubermenu_notice_hidden', true );
$referer = fusion_get_referer();
if ( ! $referer ) {
$referer = '';
}
wp_safe_redirect( $referer );
}
}
add_action( 'admin_init', 'avada_nag_ignore' );
/**
* Support email login on my account dropdown.
*/
if ( isset( $_POST['fusion_woo_login_box'] ) && 'true' === $_POST['fusion_woo_login_box'] ) { // phpcs:ignore WordPress.Security.NonceVerification
add_filter( 'authenticate', 'avada_email_login_auth', 10, 3 );
}
/**
* Allow loging-in via email.
*
* @param object $user The user.
* @param string $username The username.
* @param string $password The password.
*/
function avada_email_login_auth( $user, $username, $password ) {
if ( is_a( $user, 'WP_User' ) ) {
return $user;
}
if ( ! empty( $username ) ) {
$username = str_replace( '&', '&', stripslashes( $username ) );
$user = get_user_by( 'email', $username );
if ( isset( $user, $user->user_login, $user->user_status ) && 0 === (int) $user->user_status ) {
$username = $user->user_login;
}
}
return wp_authenticate_username_password( null, $username, $password );
}
/**
* No redirect on woo my account dropdown login when it fails.
*/
if ( isset( $_POST['fusion_woo_login_box'] ) && 'true' === $_POST['fusion_woo_login_box'] ) { // phpcs:ignore WordPress.Security.NonceVerification
add_action( 'init', 'avada_load_login_redirect_support' );
}
/**
* Tweaks the login redirect for WooCommerce.
*/
function avada_load_login_redirect_support() {
if ( class_exists( 'WooCommerce' ) ) {
// When on the my account page, do nothing.
if ( ! empty( $_POST['login'] ) ) {
if ( isset( $_POST['_wpnonce'] ) && ! empty( $_POST['_wpnonce'] ) ) {
$nonce = sanitize_text_field( wp_unslash( $_POST['_wpnonce'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
if ( wp_verify_nonce( $nonce, 'woocommerce-login' ) ) {
return;
}
}
}
add_filter( 'login_redirect', 'avada_login_fail', 10, 3 );
}
}
/**
* Avada Login Fail Test.
*
* @param string $url The URL.
* @param string $raw_url The Raw URL.
* @param WP_User|WP_Error $user User.
* @return string
*/
function avada_login_fail( $url = '', $raw_url = '', $user = '' ) {
if ( ! is_account_page() ) {
if ( isset( $_SERVER ) && isset( $_SERVER['HTTP_REFERER'] ) && esc_url_raw( wp_unslash( $_SERVER['HTTP_REFERER'] ) ) ) {
$referer_array = wp_parse_url( esc_url_raw( wp_unslash( $_SERVER['HTTP_REFERER'] ) ) );
$parsed_url = ( isset( $_SERVER['SERVER_PORT'] ) ) ? wp_parse_url( esc_url_raw( wp_unslash( $_SERVER['SERVER_PORT'] ) ) ) : [
'host' => '80',
];
// Make sure it works ok for ports other than 80.
$port = ( isset( $_SERVER['SERVER_PORT'] ) ) ? ':' . $parsed_url['host'] : ':80';
$port = ( ':80' === $port ) ? '' : $port;
// Make sure host doesn't have a trailing slash and append the port.
$host = untrailingslashit( $referer_array['host'] ) . $port;
// Make sure path has a slash at the beginning.
$path = $referer_array['path'];
if ( 0 !== strpos( $referer_array['path'], '/' ) ) {
$path = '/' . $referer_array['path'];
}
// Combine the above to a $referer.
if ( false !== strpos( $port, '443' ) ) {
$referer = 'https://' . $host . $path;
} else {
$referer = '//' . $host . $path;
}
// If there's a valid referrer, and it's not the default log-in screen.
if ( ! empty( $referer ) && ! strstr( $referer, 'wp-login' ) && ! strstr( $referer, 'wp-admin' ) ) {
if ( is_wp_error( $user ) ) {
// Let's append some information (login=failed) to the URL for the theme to use.
wp_safe_redirect(
add_query_arg(
[
'login' => 'failed',
],
$referer
)
);
} else {
wp_safe_redirect( $referer );
}
exit;
}
}
}
return $url;
}
/**
* Show a shop page description on product archives.
*/
function woocommerce_product_archive_description() {
if ( is_post_type_archive( 'product' ) && in_array( absint( get_query_var( 'paged' ) ), [ 0, 1 ], true ) ) {
$shop_page = get_post( wc_get_page_id( 'shop' ) );
if ( $shop_page ) {
$description = apply_filters( 'the_content', $shop_page->post_content );
if ( $description ) {
echo '<div class="post-content">' . $description . '</div>'; // phpcs:ignore WordPress.Security.EscapeOutput
}
}
}
}
/**
* Layerslider API.
*/
function avada_layerslider_ready() {
if ( class_exists( 'LS_Sources' ) ) {
LS_Sources::addSkins( Avada::$template_dir_path . '/includes/ls-skins' );
}
if ( defined( 'LS_PLUGIN_BASE' ) ) {
remove_action( 'after_plugin_row_' . LS_PLUGIN_BASE, 'layerslider_plugins_purchase_notice', 10, 3 );
}
}
add_action( 'layerslider_ready', 'avada_layerslider_ready' );
function awb_init_patcher() {
// Init patcher only in Dashboard.
if ( is_admin() || ( defined( 'WP_CLI' ) && WP_CLI ) ) {
/**
* Istantiate the auto-patcher tool.
*/
global $avada_patcher;
$avada_patcher_args = [
'context' => 'avada',
'version' => AVADA_VERSION,
'name' => 'Avada',
'parent_slug' => 'avada',
'page_title' => esc_attr__( 'Avada Patcher', 'Avada' ),
'menu_title' => esc_attr__( 'Patcher', 'Avada' ),
'classname' => 'Avada',
'bundled' => [],
];
$avada_plugins = [
'fusion-builder' => 'fusion-builder/fusion-builder.php',
'fusion-core' => 'fusion-core/fusion-core.php',
'fusion-white-label-branding' => 'fusion-white-label-branding/fusion-white-label-branding.php',
];
if ( ! function_exists( 'is_plugin_active' ) ) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
foreach ( $avada_plugins as $plugin_context => $plugin_path ) {
if ( is_plugin_active( $plugin_path ) ) {
$avada_patcher_args['bundled'][] = $plugin_context;
}
}
$avada_patcher = new Fusion_Patcher( $avada_patcher_args );
}
}
add_action( 'after_setup_theme', 'awb_init_patcher' );
function awb_init_maintenance() {
/**
* During updates sometimes there are changes that will break a site.
* We're adding a maintenance page to make sure users don't see a broken site.
* As soon as the update is complete the site automatically returns to normal mode.
*/
$maintenance = false;
$users_message = esc_html__( 'Our site is currently undergoing scheduled maintenance. Please try again in a moment.', 'Avada' );
// Check if we're currently update Avada.
if ( Avada::$is_updating ) {
$maintenance = true;
$admin_message = esc_html__( 'Currently updating the Avada Theme. Your site will be accessible once the update finishes', 'Avada' );
}
/**
* Make sure that if the fusion-core plugin is activated,
* it's at least version 2.0.
*/
if ( class_exists( 'FusionCore_Plugin' ) ) {
$fc_version = FUSION_CORE_VERSION;
if ( version_compare( $fc_version, '2.0', '<' ) ) {
$maintenance = true;
/* translators: The "follow this link" link. */
$admin_message = sprintf( esc_attr__( 'The Avada-Core plugin needs to be updated before your site can exit maintenance mode. Please %s to update the plugin.', 'Avada' ), '<a href="' . admin_url( 'themes.php?page=install-required-plugins' ) . '" style="color:#0088cc;font-weight:bold;">' . esc_attr__( 'follow this link', 'Avada' ) . '</a>' );
}
}
/**
* If we're on maintenance mode, show the screen.
*/
if ( $maintenance ) {
new Avada_Maintenance( true, $users_message, $admin_message );
}
}
add_action( 'after_setup_theme', 'awb_init_maintenance' );
/**
* Class for adding Avada specific data to builder.
* These only affect the dashboard so are not needed when in the front-end.
*/
if ( ( Avada_Helper::is_post_admin_screen() || ( function_exists( 'fusion_is_builder_frame' ) && fusion_is_builder_frame() ) ) && defined( 'FUSION_BUILDER_PLUGIN_DIR' ) && ! fusion_doing_ajax() ) {
Fusion_Builder_Filters::get_instance();
}
/**
* We will use builder options in Avada, no need for FB to instantiate redux.
*/
add_theme_support( 'fusion-builder-options' );
add_filter( 'fusion_options_label', 'avada_set_options_label' );
add_filter( 'fusion_builder_options_url', 'avada_set_options_url' );
/**
* Sets options label.
*
* @since 5.1
* @param string $label Label name of options page.
* @return string
*/
function avada_set_options_label( $label ) {
return esc_html__( 'Global Options', 'Avada' );
}
/**
* Set options page URL.
*
* @since 5.1
* @param string $url URL to the options page.
* @return string
*/
function avada_set_options_url( $url ) {
return admin_url( 'themes.php?page=avada_options' );
}
if ( Avada()->registration->should_show() && function_exists( 'Fusion_App' ) && Fusion_App()->get_builder_status() ) {
$fusion_builder_demo_options_importer = new Fusion_Builder_Demos_Theme_Options();
}
/**
* Filter a sanitized key string.
*
* @since 5.0.2
* @param string $key Sanitized key.
* @param string $raw_key The key prior to sanitization.
* @return string
*/
function avada_auto_update( $key, $raw_key ) {
return ( 'avada' === $key && 'Avada' === $raw_key ) ? $raw_key : $key;
}
/**
* Check if doing an ajax theme update,
* if so make sure Avada theme name is not changed to lowercase.
*/
if ( fusion_doing_ajax() && isset( $_POST['action'] ) && 'update-theme' === $_POST['action'] ) { // phpcs:ignore WordPress.Security.NonceVerification
add_filter( 'sanitize_key', 'avada_auto_update', 10, 2 );
}
/**
* Include Avada Builder shared options support.
*/
if ( class_exists( 'FusionBuilder' ) ) {
require_once Avada::$template_dir_path . '/includes/fusion-shared-options.php';
}
/**
* Reset all Fusion Caches.
*
* @since 5.1
*
* @param array $delete_cache An array of caches to delete.
*/
function avada_reset_all_caches( $delete_cache = [] ) {
// Reset fusion-caches.
if ( ! class_exists( 'Fusion_Cache' ) ) {
require_once Avada::$template_dir_path . '/includes/lib/inc/class-fusion-cache.php';
}
$fusion_cache = new Fusion_Cache();
$fusion_cache->reset_all_caches( $delete_cache );
}
/**
* Init the languages updater.
*
* @since 6.1
*/
if ( ! class_exists( 'Fusion_Languages_Updater_API' ) ) {
require_once Avada::$template_dir_path . '/includes/class-fusion-languages-updater-api.php';
}
new Fusion_Languages_Updater_API( 'theme', 'Avada', AVADA_VERSION );
/**
* Init the Server Rules object, adds necessary filter.
*
* @since 7.4
*/
if ( is_admin() && fusion_doing_ajax() && isset( $_POST['action'] ) && ( 'fusion_options_ajax_save' === $_POST['action'] || 'fusion_app_save_post_content' === $_POST['action'] || 'awb_performance_save' === $_POST['action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing
$avada_server_rules = Avada_Server_Rules::get_instance();
}
/* Omit closing PHP tag to avoid "Headers already sent" issues. */