array( 'et_pb_get_backbone_template', 'et_pb_get_backbone_templates', 'et_pb_process_computed_property', 'et_fb_ajax_render_shortcode', 'et_fb_ajax_save', 'et_fb_ajax_drop_autosave', 'et_fb_get_saved_layouts', 'et_fb_save_layout', 'et_fb_update_layout', 'et_pb_execute_content_shortcodes', 'et_pb_ab_builder_data', 'et_pb_create_ab_tables', 'et_pb_update_stats_table', 'et_pb_ab_clear_cache', 'et_pb_ab_clear_stats', 'et_fb_prepare_shortcode', 'et_fb_process_imported_content', 'et_fb_get_saved_templates', 'et_fb_retrieve_builder_data', 'et_pb_process_custom_font', 'et_builder_email_add_account', // email opt-in module 'et_builder_email_remove_account', // email opt-in module 'et_builder_email_get_lists', // email opt-in module 'et_builder_save_settings', // builder plugin dashboard (global builder settings) 'save_epanel', // ePanel (global builder settings) 'et_builder_library_get_layout', 'et_builder_library_get_layouts_data', 'et_fb_fetch_attachments', 'et_pb_get_saved_templates', 'et_builder_resolve_post_content', ), ); // Added built-in third party plugins support // Easy Digital Downloads if ( class_exists( 'Easy_Digital_Downloads') ) { $builder_load_requests['action'][] = 'edd_load_gateway'; } // WooCommerce - it uses its own ajax endpoint instead of admin-ajax.php if ( class_exists( 'WooCommerce' ) ) { $builder_load_requests['wc-ajax'] = array( 'update_order_review', ); } // Merging third party exceptions; built-in exceptions should not be removable $builder_custom_load_requests = apply_filters( 'et_builder_load_requests', array() ); if ( ! empty( $builder_custom_load_requests ) ) { foreach ( $builder_custom_load_requests as $builder_custom_query_string => $builder_custom_possible_values ) { if ( ! isset( $builder_load_requests[ $builder_custom_query_string ] ) ) { $builder_load_requests[ $builder_custom_query_string ] = $builder_custom_possible_values; } else { $builder_load_requests[ $builder_custom_query_string ] = array_merge( $builder_custom_possible_values, $builder_load_requests[ $builder_custom_query_string ] ); } } } // Legacy compatibility for action only request exception filter $builder_load_actions = apply_filters( 'et_builder_load_actions', array() ); if ( ! empty( $builder_load_actions ) ) { $builder_load_requests['action'] = array_merge( $builder_load_actions, $builder_load_requests[ 'action' ] ); } // Determine whether current AJAX request should load builder or not $load_builder_on_ajax = false; // If current request's query string exists on list of possible values, load builder // phpcs:disable WordPress.Security.NonceVerification.NoNonceVerification foreach ( $builder_load_requests as $query_string => $possible_values ) { if ( isset( $_REQUEST[ $query_string ] ) && in_array( $_REQUEST[ $query_string ], $possible_values ) ) { $load_builder_on_ajax = true; break; } } $force_builder_load = isset( $_POST['et_load_builder_modules'] ) && '1' === $_POST['et_load_builder_modules']; $force_memory_limit = isset( $_POST['action'] ) && 'et_fb_retrieve_builder_data' === $_POST['action']; if ( isset( $_REQUEST['action'] ) && 'heartbeat' === $_REQUEST['action'] ) { // if this is the heartbeat, and if its not packing our heartbeat data, then return if ( !isset( $_REQUEST['data'] ) || !isset( $_REQUEST['data']['et'] ) ) { return; } } else if ( ! $force_builder_load && ! $load_builder_on_ajax ) { return; } if ( $force_memory_limit || et_should_memory_limit_increase() ) { et_increase_memory_limit(); } // phpcs:enable } function et_builder_load_global_functions_script() { wp_enqueue_script( 'et-builder-modules-global-functions-script', ET_BUILDER_URI . '/scripts/frontend-builder-global-functions.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); } add_action( 'wp_enqueue_scripts', 'et_builder_load_global_functions_script', 7 ); function et_builder_load_modules_styles() { $current_page_id = apply_filters( 'et_is_ab_testing_active_post_id', get_the_ID() ); $is_fb_enabled = function_exists( 'et_fb_enabled' ) ? et_fb_enabled() : false; $is_ab_testing = function_exists( 'et_is_ab_testing_active' ) ? et_is_ab_testing_active() : false; wp_register_script( 'google-maps-api', esc_url_raw( add_query_arg( array( 'v' => 3, 'key' => et_pb_get_google_api_key() ), is_ssl() ? 'https://maps.googleapis.com/maps/api/js' : 'http://maps.googleapis.com/maps/api/js' ) ), array(), ET_BUILDER_VERSION, true ); wp_register_script( 'hashchange', ET_BUILDER_URI . '/scripts/jquery.hashchange.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); wp_register_script( 'salvattore', ET_BUILDER_URI . '/scripts/salvattore.min.js', array(), ET_BUILDER_VERSION, true ); wp_register_script( 'easypiechart', ET_BUILDER_URI . '/scripts/jquery.easypiechart.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); wp_enqueue_script( 'divi-fitvids', ET_BUILDER_URI . '/scripts/jquery.fitvids.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); wp_enqueue_script( 'waypoints', ET_BUILDER_URI . '/scripts/waypoints.min.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); wp_enqueue_script( 'magnific-popup', ET_BUILDER_URI . '/scripts/jquery.magnific-popup.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); wp_enqueue_script( 'et-jquery-touch-mobile', ET_BUILDER_URI . '/scripts/jquery.mobile.custom.min.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); wp_enqueue_script( 'et-builder-modules-script', ET_BUILDER_URI . '/scripts/frontend-builder-scripts.js', apply_filters( 'et_pb_frontend_builder_scripts_dependencies', array( 'jquery', 'et-jquery-touch-mobile' ) ), ET_BUILDER_VERSION, true ); wp_enqueue_style( 'magnific-popup', ET_BUILDER_URI . '/styles/magnific_popup.css', array(), ET_BUILDER_VERSION ); // Load modules wrapper on CPT if ( et_builder_post_is_of_custom_post_type() ) { wp_enqueue_script( 'et-builder-cpt-modules-wrapper', ET_BUILDER_URI . '/scripts/cpt-modules-wrapper.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); } if ( et_is_builder_plugin_active() ) { wp_register_script( 'fittext', ET_BUILDER_URI . '/scripts/jquery.fittext.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); } // Load main styles CSS file only if the Builder plugin is active if ( et_is_builder_plugin_active() ) { $style_suffix = et_load_unminified_styles() ? '' : '.min'; wp_enqueue_style( 'et-builder-modules-style', ET_BUILDER_URI . '/styles/frontend-builder-plugin-style' . $style_suffix . '.css', array(), ET_BUILDER_VERSION ); } // Load visible.min.js only if AB testing active on current page OR VB (because post settings is synced between VB and BB) if ( $is_ab_testing || $is_fb_enabled ) { wp_enqueue_script( 'et-jquery-visible-viewport', ET_BUILDER_URI . '/scripts/ext/jquery.visible.min.js', array( 'jquery', 'et-builder-modules-script' ), ET_BUILDER_VERSION, true ); } $builder_modules_script_handle = apply_filters( 'et_builder_modules_script_handle', 'et-builder-modules-script' ); wp_localize_script( $builder_modules_script_handle, 'et_pb_custom', array( 'ajaxurl' => is_ssl() ? admin_url( 'admin-ajax.php' ) : admin_url( 'admin-ajax.php', 'http' ), 'images_uri' => get_template_directory_uri() . '/images', 'builder_images_uri' => ET_BUILDER_URI . '/images', 'et_frontend_nonce' => wp_create_nonce( 'et_frontend_nonce' ), 'subscription_failed' => esc_html__( 'Please, check the fields below to make sure you entered the correct information.', 'et_builder' ), 'et_ab_log_nonce' => wp_create_nonce( 'et_ab_testing_log_nonce' ), 'fill_message' => esc_html__( 'Please, fill in the following fields:', 'et_builder' ), 'contact_error_message' => esc_html__( 'Please, fix the following errors:', 'et_builder' ), 'invalid' => esc_html__( 'Invalid email', 'et_builder' ), 'captcha' => esc_html__( 'Captcha', 'et_builder' ), 'prev' => esc_html__( 'Prev', 'et_builder' ), 'previous' => esc_html__( 'Previous', 'et_builder' ), 'next' => esc_html__( 'Next', 'et_builder' ), 'wrong_captcha' => esc_html__( 'You entered the wrong number in captcha.', 'et_builder' ), 'is_builder_plugin_used' => et_is_builder_plugin_active(), 'ignore_waypoints' => et_is_ignore_waypoints() ? 'yes' : 'no', 'is_divi_theme_used' => function_exists( 'et_divi_fonts_url' ), 'widget_search_selector' => apply_filters( 'et_pb_widget_search_selector', '.widget_search' ), 'is_ab_testing_active' => $is_ab_testing, 'page_id' => $current_page_id, 'unique_test_id' => get_post_meta( $current_page_id, '_et_pb_ab_testing_id', true ), 'ab_bounce_rate' => '' !== get_post_meta( $current_page_id, '_et_pb_ab_bounce_rate_limit', true ) ? get_post_meta( $current_page_id, '_et_pb_ab_bounce_rate_limit', true ) : 5, 'is_cache_plugin_active' => false === et_pb_detect_cache_plugins() ? 'no' : 'yes', 'is_shortcode_tracking' => get_post_meta( $current_page_id, '_et_pb_enable_shortcode_tracking', true ), 'tinymce_uri' => defined( 'ET_FB_ASSETS_URI' ) ? ET_FB_ASSETS_URI . '/vendors' : '', ) ); /** * Only load this during builder preview screen session */ if ( is_et_pb_preview() ) { // Set fixed protocol for preview URL to prevent cross origin issue $preview_scheme = is_ssl() ? 'https' : 'http'; // Get home url, then parse it $preview_origin_component = parse_url( home_url( '', $preview_scheme ) ); // Rebuild origin URL, strip sub-directory address if there's any (postMessage e.origin doesn't pass sub-directory address) $preview_origin = ""; // Perform check, prevent unnecessary error if ( isset( $preview_origin_component['scheme'] ) && isset( $preview_origin_component['host'] ) ) { $preview_origin = "{$preview_origin_component['scheme']}://{$preview_origin_component['host']}"; // Append port number if different port number is being used if ( isset( $preview_origin_component['port'] ) ) { $preview_origin = "{$preview_origin}:{$preview_origin_component['port']}"; } } // Enqueue theme's style.css if it hasn't been enqueued (possibly being hardcoded by theme) if ( ! et_builder_has_theme_style_enqueued() && et_is_builder_plugin_active() ) { wp_enqueue_style( 'et-builder-theme-style-css', get_stylesheet_uri(), array() ); } wp_enqueue_style( 'et-builder-preview-style', ET_BUILDER_URI . '/styles/preview.css', array(), ET_BUILDER_VERSION ); wp_enqueue_script( 'et-builder-preview-script', ET_BUILDER_URI . '/scripts/frontend-builder-preview.js', array( 'jquery' ), ET_BUILDER_VERSION, true ); wp_localize_script( 'et-builder-preview-script', 'et_preview_params', array( 'preview_origin' => esc_url( $preview_origin ), 'alert_origin_not_matched' => sprintf( esc_html__( 'Unauthorized access. Preview cannot be accessed outside %1$s.', 'et_builder' ), esc_url( home_url( '', $preview_scheme ) ) ), ) ); } } add_action( 'wp_enqueue_scripts', 'et_builder_load_modules_styles', 11 ); function et_builder_get_modules_js_data() { // Data shouldn't be loaded in Builder, so always pass an empty array there. $animation_data = et_fb_enabled() ? array() : et_builder_handle_animation_data(); $animation_data_json = json_encode( $animation_data ); $link_options_data = et_fb_enabled() ? array() : et_builder_handle_link_options_data(); $link_options_data_json = json_encode( $link_options_data ); ?> get_data( $script, 'data' ); // If to-be dequeued script has localized data, get builder script's data and concatenated both to ensure compatibility // Concatenating is needed because script's localize data is saved as string (encoded array concatenated into variable name) if ( $script_data && '' !== trim( $script_data ) ) { // If builder script handle localized data returns false/empty, $script_data still need to be added $concatenated_scripts_data = implode( ' ', array_filter( array( wp_scripts()->get_data( $builder_script_handle, 'data' ), $script_data, ) ) ); // Add concatenated localized data to builder script handle wp_scripts()->add_data( $builder_script_handle, 'data', $concatenated_scripts_data ); } // If dequeued script has inline script, get it then re-add it to builder script handle using appropriate position $inline_script_positions = array( 'before', 'after' ); foreach ( $inline_script_positions as $inline_script_position ) { $inline_script = wp_scripts()->get_data( $script, $inline_script_position ); // Inline script is saved as array. add_inline_script() method will handle it appending process if ( is_array( $inline_script ) && ! empty( $inline_script ) ) { wp_scripts()->add_inline_script( $builder_script_handle, implode( ' ', $inline_script ), $inline_script_position ); } } wp_dequeue_script( $script ); wp_deregister_script( $script ); wp_register_script( $script, '', array(), ET_BUILDER_VERSION, true ); } } } add_action( 'wp_print_scripts', 'et_builder_dequeue_minified_scripts', 99999999 ); // add_action( 'wp_print_footer_scripts', 'et_builder_dequeue_minified_scripts', 9 ); //