: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
esc_html__( 'Add New Layout', 'et_builder' ),
esc_html__( 'Layout Name', 'et_builder' ),
$template_type_option_output,
$template_global_option_output,
$layout_cat_option_output, //#5
apply_filters( 'et_pb_new_layout_before_options', '' ),
apply_filters( 'et_pb_new_layout_after_options', '' )
return apply_filters( 'et_pb_new_layout_modal_output', $output );
* Get layout type of given post ID
if ( ! function_exists( 'et_pb_get_layout_type' ) ) :
function et_pb_get_layout_type( $post_id ) {
$layout_type_data = wp_get_post_terms( $post_id, 'layout_type' );
if ( empty( $layout_type_data ) ) {
// Pluck name out of taxonomies
$layout_type_array = wp_list_pluck( $layout_type_data, 'name' );
// Logically, a layout only have one layout type.
$layout_type = implode( "|", $layout_type_array );
if ( ! function_exists( 'et_pb_is_wp_old_version' ) ) :
function et_pb_is_wp_old_version() {
$wp_major_version = substr( $wp_version, 0, 3 );
if ( version_compare( $wp_major_version, '4.5', '<' ) ) {
if ( ! function_exists( 'et_pb_is_wp_old_version' ) ) :
function et_pb_is_wp_old_version(){
global $typenow, $post, $wp_version;
$wp_major_version = substr( $wp_version, 0, 3 );
if ( version_compare( $wp_major_version, '4.5', '<' ) ) {
if ( ! function_exists( 'et_builder_theme_or_plugin_updated_cb' ) ):
function et_builder_theme_or_plugin_updated_cb() {
// Delete cached definitions / helpers
et_fb_delete_builder_assets();
et_update_option( 'et_pb_clear_templates_cache', true );
add_action( 'after_switch_theme', 'et_builder_theme_or_plugin_updated_cb' );
add_action( 'activated_plugin', 'et_builder_theme_or_plugin_updated_cb', 10, 0 );
add_action( 'deactivated_plugin', 'et_builder_theme_or_plugin_updated_cb', 10, 0 );
add_action( 'upgrader_process_complete', 'et_builder_theme_or_plugin_updated_cb', 10, 0 );
add_action( 'et_support_center_toggle_safe_mode', 'et_builder_theme_or_plugin_updated_cb', 10, 0 );
* Enqueue scripts that are required by BFB and Layout Block. These scripts are abstracted into
* separated file so Layout Block can enqueue the same sets of scripts without re-register and
function et_bfb_enqueue_scripts_dependencies() {
global $wp_version, $post;
$wp_major_version = substr( $wp_version, 0, 3 );
if ( et_pb_is_pagebuilder_used( get_the_ID() ) ) {
if ( version_compare( $wp_major_version, '4.5', '<' ) ) {
$jQuery_ui = 'et_pb_admin_date_js';
wp_register_script( $jQuery_ui, ET_BUILDER_URI . '/scripts/ext/jquery-ui-1.10.4.custom.min.js', array( 'jquery' ), ET_BUILDER_PRODUCT_VERSION, true );
$jQuery_ui = 'jquery-ui-datepicker';
// Load timepicker script on admin page in case of BFB to make it work with modals loaded on WP admin DOM
wp_enqueue_script( 'et_bfb_admin_date_addon_js', ET_BUILDER_URI . '/scripts/ext/jquery-ui-timepicker-addon.js', array( $jQuery_ui ), ET_BUILDER_PRODUCT_VERSION, true );
// Load google maps script on admin page in case of BFB to make it work with modals loaded on WP admin DOM
if ( et_pb_enqueue_google_maps_script() ) {
wp_enqueue_script( 'et_bfb_google_maps_api', esc_url( add_query_arg( array( 'key' => et_pb_get_google_api_key(), 'callback' => 'initMap' ), is_ssl() ? 'https://maps.googleapis.com/maps/api/js' : 'http://maps.googleapis.com/maps/api/js' ) ), array(), '3', true );
wp_enqueue_script( 'et_pb_media_library', ET_BUILDER_URI . '/scripts/ext/media-library.js', array( 'media-editor' ), ET_BUILDER_PRODUCT_VERSION, true );
if ( ! wp_script_is( 'wp-hooks', 'registered' ) ) {
// Use bundled wp-hooks script when WP < 5.0
wp_enqueue_script( 'wp-hooks', ET_BUILDER_URI. '/frontend-builder/assets/backports/hooks.js' );
if ( ! function_exists( 'et_bfb_enqueue_scripts' ) ):
function et_bfb_enqueue_scripts() {
// Enqueue scripts required by BFB
et_bfb_enqueue_scripts_dependencies();
wp_enqueue_script( 'et_bfb_admin_js', ET_BUILDER_URI . '/scripts/bfb_admin_script.js', array( 'jquery', 'et_pb_media_library' ), ET_BUILDER_PRODUCT_VERSION, true );
wp_localize_script( 'et_bfb_admin_js', 'et_bfb_options', apply_filters( 'et_bfb_options', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'et_enable_bfb_nonce' => wp_create_nonce( 'et_enable_bfb_nonce' ),
'default_initial_column_type' => apply_filters( 'et_builder_default_initial_column_type', '4_4' ),
'default_initial_text_module' => apply_filters( 'et_builder_default_initial_text_module', 'et_pb_text' ),
'skip_default_content_adding' => apply_filters( 'et_builder_skip_content_activation', false, $post ) ? 'skip' : '',
// Add filter to register tinyMCE buttons that is missing from BFB
add_filter( 'mce_external_plugins', 'et_bfb_filter_mce_plugin' );
* BFB use built-in WordPress tinyMCE initialization while visual builder uses standalone tinyMCE
* initialization which leads to several buttons in VB not available in BFB. This function register
* @param array tinyMCE plugin list
function et_bfb_filter_mce_plugin( $plugins ) {
// NOTE: `ET_FB_ASSETS_URI` constant isn't available yet at this point, so use `ET_BUILDER_URI`
$plugins['table'] = ET_BUILDER_URI . '/frontend-builder/assets/vendors/plugins/table/plugin.min.js';
function et_pb_wp_editor_settings( $settings, $editor_id ) {
if ( 'content' === $editor_id ) {
$settings['default_editor'] = 'html';
if ( ! function_exists( 'et_pb_add_builder_page_js_css' ) ) :
function et_pb_add_builder_page_js_css(){
global $typenow, $post, $wp_version;
$wp_major_version = substr( $wp_version, 0, 3 );
// Avoid serving any data from object cache
if ( ! defined( 'DONOTCACHEPAGE' ) ) {
define( 'DONOTCACHEPAGE', true );
// fix tinymce to load in html mode for BB
if ( et_pb_is_pagebuilder_used() ) {
add_filter( 'wp_editor_settings', 'et_pb_wp_editor_settings', 10, 2 );
// BEGIN Process shortcodes (for module settings migrations and Yoast SEO compatibility)
// Get list of shortcodes that causes issue if being triggered in admin
$conflicting_shortcodes = et_pb_admin_excluded_shortcodes();
if ( ! empty( $conflicting_shortcodes ) ) {
foreach ( $conflicting_shortcodes as $shortcode ) {
remove_shortcode( $shortcode );
// save the original content of $post variable
// get the content for yoast
$post_content_processed = do_shortcode( $post->post_content );
// set the $post to the original content to make sure it wasn't changed by do_shortcode()
$post = $post_original; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.OverrideProhibited -- were restoring it to what it was beforea few lines above.
// END Process shortcodes
$is_global_template = '';
$selective_sync_status = '';
$global_module_type = '';
$excluded_global_options = array();
$utils = ET_Core_Data_Utils::instance();
$updates_options = get_site_option( 'et_automatic_updates_options', array() );
'et_username' => $utils->array_get( $updates_options, 'username', '' ),
'et_api_key' => $utils->array_get( $updates_options, 'api_key', '' ),
'status' => get_site_option( 'et_account_status', 'not_active' ),
// we need some post data when editing saved templates.
if ( 'et_pb_layout' === $typenow ) {
$template_scope = wp_get_object_terms( get_the_ID(), 'scope' );
$template_type = wp_get_object_terms( get_the_ID(), 'layout_type' );
$is_global_template = ! empty( $template_scope[0] ) ? $template_scope[0]->slug : 'regular';
$global_module_type = ! empty( $template_type[0] ) ? $template_type[0]->slug : '';
// Check whether it's a Global item's page and display wp error if Global items disabled for current user
if ( ! et_pb_is_allowed( 'edit_global_library' ) && 'global' === $is_global_template ) {
wp_die( esc_html__( "you don't have sufficient permissions to access this page", 'et_builder' ) );
if ( 'global' === $is_global_template ) {
$excluded_global_options = get_post_meta( $post_id, '_et_pb_excluded_global_options' );
$selective_sync_status = empty( $excluded_global_options ) ? '' : 'updated';
$built_for_post_type = get_post_meta( get_the_ID(), '_et_pb_built_for_post_type', true );
$built_for_post_type = '' !== $built_for_post_type ? $built_for_post_type : 'page';
$post_type = apply_filters( 'et_pb_built_for_post_type', $built_for_post_type, get_the_ID() );
// we need this data to create the filter when adding saved modules
$layout_categories = get_terms( 'layout_category' );
$layout_cat_data = array();
$layout_cat_data_json = '';
if ( is_array( $layout_categories ) && ! empty( $layout_categories ) ) {
foreach( $layout_categories as $category ) {
$layout_cat_data[] = array(
'slug' => $category->slug,
'name' => $category->name,
if ( ! empty( $layout_cat_data ) ) {
$layout_cat_data_json = json_encode( $layout_cat_data );
// Set fixed protocol for preview URL to prevent cross origin issue
$preview_scheme = is_ssl() ? 'https' : 'http';
$preview_url = esc_url( home_url( '/' ) );
if ( 'https' === $preview_scheme && ! strpos( $preview_url, 'https://' ) ) {
$preview_url = str_replace( 'http://', 'https://', $preview_url );
// force update cache if et_pb_clear_templates_cache option is set to on
$force_cache_value = et_get_option( 'et_pb_clear_templates_cache', '', '', true );
$force_cache_update = '' !== $force_cache_value ? $force_cache_value : ET_BUILDER_FORCE_CACHE_PURGE;
* Whether or not the backend builder should clear its Backbone template cache.
* @param bool $force_cache_update
$force_cache_update = apply_filters( 'et_pb_clear_template_cache', $force_cache_update );
// delete et_pb_clear_templates_cache option it's not needed anymore
et_delete_option( 'et_pb_clear_templates_cache' );
wp_enqueue_script( 'jquery-ui-core' );
wp_enqueue_script( 'underscore' );
wp_enqueue_script( 'backbone' );
if ( et_pb_enqueue_google_maps_script() ) {
wp_enqueue_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(), '3', true );
wp_enqueue_script( 'wp-color-picker' );
wp_enqueue_style( 'wp-color-picker' );
if ( version_compare( $wp_major_version, '4.9', '>=' ) ) {
wp_enqueue_script( 'wp-color-picker-alpha', ET_BUILDER_URI . '/scripts/ext/wp-color-picker-alpha.min.js', array( 'jquery', 'wp-color-picker' ), ET_BUILDER_VERSION, true );
wp_localize_script( 'wp-color-picker-alpha', 'et_pb_color_picker_strings', apply_filters( 'et_pb_color_picker_strings_builder', array(
'legacy_pick' => esc_html__( 'Select', 'et_builder' ),
'legacy_current' => esc_html__( 'Current Color', 'et_builder' ),
wp_enqueue_script( 'wp-color-picker-alpha', ET_BUILDER_URI . '/scripts/ext/wp-color-picker-alpha-48.min.js', array( 'jquery', 'wp-color-picker' ), ET_BUILDER_VERSION, true );
wp_register_script( 'chart', ET_BUILDER_URI . '/scripts/ext/chart.min.js', array(), ET_BUILDER_VERSION, true );
wp_register_script( 'jquery-tablesorter', ET_BUILDER_URI . '/scripts/ext/jquery.tablesorter.min.js', array( 'jquery' ), ET_BUILDER_VERSION, true );
// load 1.10.4 versions of jQuery-ui scripts if WP version is less than 4.5, load 1.11.4 version otherwise
if ( et_pb_is_wp_old_version() ) {
$jQuery_ui = 'et_pb_admin_date_js';
wp_enqueue_script( $jQuery_ui, ET_BUILDER_URI . '/scripts/ext/jquery-ui-1.10.4.custom.min.js', array( 'jquery' ), ET_BUILDER_VERSION, true );
$jQuery_ui = 'jquery-ui-datepicker';
wp_enqueue_script( 'et_pb_admin_date_addon_js', ET_BUILDER_URI . '/scripts/ext/jquery-ui-timepicker-addon.js', array( $jQuery_ui ), ET_BUILDER_VERSION, true );
wp_enqueue_script( 'validation', ET_BUILDER_URI . '/scripts/ext/jquery.validate.js', array( 'jquery' ), ET_BUILDER_VERSION, true );
wp_enqueue_script( 'minicolors', ET_BUILDER_URI . '/scripts/ext/jquery.minicolors.js', array( 'jquery' ), ET_BUILDER_VERSION, true );
wp_enqueue_script( 'et_pb_cache_notice_js', ET_BUILDER_URI .'/scripts/cache_notice.js', array( 'jquery', 'et_pb_admin_js' ), ET_BUILDER_VERSION, true );
wp_localize_script( 'et_pb_cache_notice_js', 'et_pb_notice_options', apply_filters( 'et_pb_notice_options_builder', array(
'product_version' => ET_BUILDER_PRODUCT_VERSION,
wp_enqueue_script( 'lz_string', ET_BUILDER_URI .'/scripts/ext/lz-string.min.js', array(), ET_BUILDER_VERSION, true );
wp_enqueue_script( 'es6-promise', '//cdn.jsdelivr.net/npm/es6-promise@4/dist/es6-promise.auto.min.js', array(), null, true );
wp_enqueue_script( 'postmate', '//cdn.jsdelivr.net/npm/postmate@1.1.9/build/postmate.min.js', array( 'es6-promise' ), null, true );
wp_enqueue_script( 'et_pb_media_library', ET_BUILDER_URI . '/scripts/ext/media-library.js', array( 'media-editor' ), ET_BUILDER_PRODUCT_VERSION, true );
wp_enqueue_script( 'et_pb_admin_js', ET_BUILDER_URI .'/scripts/builder.js', array( 'jquery', 'jquery-ui-core', 'underscore', 'backbone', 'chart', 'jquery-tablesorter', 'et_pb_media_library', 'lz_string', 'es6-promise' ), ET_BUILDER_VERSION, true );
wp_localize_script( 'et_pb_admin_js', 'et_pb_options', apply_filters( 'et_pb_options_builder', array_merge( array(
'debug' => defined( 'ET_DEBUG' ) && ET_DEBUG,
'wp_default_editor' => wp_default_editor(),
'et_account' => $et_account,
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'home_url' => home_url(),
'divi_library_url' => ET_BUILDER_DIVI_LIBRARY_URL,
'cookie_path' => SITECOOKIEPATH,
'preview_url' => add_query_arg( 'et_pb_preview', 'true', $preview_url ),
'et_admin_load_nonce' => wp_create_nonce( 'et_admin_load_nonce' ),
'images_uri' => ET_BUILDER_URI .'/images',
'post_type' => $post_type,
'is_third_party_post_type' => et_builder_is_post_type_custom($post_type) ? 'yes' : 'no',
'et_builder_module_parent_shortcodes' => ET_Builder_Element::get_parent_slugs_regex( $post_type ),
'et_builder_module_child_shortcodes' => ET_Builder_Element::get_child_slugs_regex( $post_type ),
'et_builder_module_raw_content_shortcodes' => ET_Builder_Element::get_raw_content_slugs( $post_type ),
'et_builder_modules' => ET_Builder_Element::get_modules_js_array( $post_type ),
'et_builder_modules_count' => ET_Builder_Element::get_modules_count( $post_type ),
'et_builder_modules_with_children' => ET_Builder_Element::get_slugs_with_children( $post_type ),
'et_builder_modules_featured_image_background' => ET_Builder_Element::get_featured_image_background_modules( $post_type ),
'et_builder_templates_amount' => ET_BUILDER_AJAX_TEMPLATES_AMOUNT,
'et_builder_edit_global_library' => et_pb_is_allowed( 'edit_global_library' ),
'default_initial_column_type' => apply_filters( 'et_builder_default_initial_column_type', '4_4' ),
'default_initial_text_module' => apply_filters( 'et_builder_default_initial_text_module', 'et_pb_text' ),
'section_only_row_dragged_away' => esc_html__( 'The section should have at least one row.', 'et_builder' ),
'fullwidth_module_dragged_away' => esc_html__( 'Fullwidth module can\'t be used outside of the Fullwidth Section.', 'et_builder' ),
'stop_dropping_3_col_row' => esc_html__( "This number of columns can't be used on this row.", 'et_builder' ),
'preview_image' => esc_html__( 'Preview', 'et_builder' ),
'empty_admin_label' => esc_html__( 'Module', 'et_builder' ),
'video_module_image_error' => esc_html__( 'Still images cannot be generated from this video service and/or this video format', 'et_builder' ),
'geocode_error' => esc_html__( 'Geocode was not successful for the following reason', 'et_builder' ),
'geocode_error_2' => esc_html__( 'Geocoder failed due to', 'et_builder' ),
'no_results' => esc_html__( 'No results found', 'et_builder' ),
'all_tab_options_hidden' => esc_html__( 'No available options for this configuration.', 'et_builder' ),
'update_global_module' => esc_html__( 'You\'re about to update global module. This change will be applied to all pages where you use this module. Press OK if you want to update this module', 'et_builder' ),
'global_row_alert' => esc_html__( 'You cannot add global rows into global sections', 'et_builder' ),
'global_module_alert' => esc_html__( 'You cannot add global modules into global sections or rows', 'et_builder' ),
'all_cat_text' => esc_html__( 'All Categories', 'et_builder' ),
'font_name_error' => esc_html__( 'Name Cannot be Empty', 'et_builder' ),
'font_file_error' => esc_html__( 'Please Select Font File', 'et_builder' ),
'font_weight_error' => esc_html__( 'Please Select Font Weight', 'et_builder' ),
'is_global_template' => $is_global_template,
'selective_sync_status' => $selective_sync_status,
'global_module_type' => $global_module_type,
'excluded_global_options' => isset( $excluded_global_options[0] ) ? json_decode( $excluded_global_options[0] ) : array(),
'template_post_id' => $post_id,
'layout_categories' => $layout_cat_data_json,
'map_pin_address_error' => esc_html__( 'Map Pin Address cannot be empty', 'et_builder' ),
'map_pin_address_invalid' => esc_html__( 'Invalid Pin and address data. Please try again.', 'et_builder' ),
'locked_section_permission_alert' => esc_html__( 'You do not have permission to unlock this section.', 'et_builder' ),
'locked_row_permission_alert' => esc_html__( 'You do not have permission to unlock this row.', 'et_builder' ),
'locked_module_permission_alert' => esc_html__( 'You do not have permission to unlock this module.', 'et_builder' ),
'locked_item_permission_alert' => esc_html__( 'You do not have permission to perform this task.', 'et_builder' ),
'localstorage_unavailability_alert' => esc_html__( 'Unable to perform copy/paste process due to inavailability of localStorage feature in your browser. Please use latest modern browser (Chrome, Firefox, or Safari) to perform copy/paste process', 'et_builder' ),
'invalid_color' => esc_html__( 'Invalid Color', 'et_builder' ),
'et_pb_preview_nonce' => wp_create_nonce( 'et_pb_preview_nonce' ),
'is_divi_library' => 'et_pb_layout' === $typenow ? 1 : 0,
'layout_type' => 'et_pb_layout' === $typenow ? et_pb_get_layout_type( get_the_ID() ) : 0,
'is_plugin_used' => et_is_builder_plugin_active(),
'yoast_content' => et_is_yoast_seo_plugin_active() ? $post_content_processed : '',
'ab_db_status' => true === et_pb_db_status_up_to_date() ? 'exists' : 'not_exists',
'ab_testing_builder_nonce' => wp_create_nonce( 'ab_testing_builder_nonce' ),
'page_color_palette' => get_post_meta( get_the_ID(), '_et_pb_color_palette', true ),
'default_color_palette' => implode( '|', et_pb_get_default_color_palette() ),
'page_section_bg_color' => get_post_meta( get_the_ID(), '_et_pb_section_background_color', true ),
'page_gutter_width' => '' !== ( $saved_gutter_width = get_post_meta( get_the_ID(), '_et_pb_gutter_width', true ) ) ? $saved_gutter_width : et_get_option( 'gutter_width', '3' ),
'product_version' => ET_BUILDER_PRODUCT_VERSION,
'active_plugins' => et_builder_get_active_plugins(),
'force_cache_purge' => $force_cache_update ? 'true' : 'false',
'memory_limit_increased' => esc_html__( 'Your memory limit has been increased', 'et_builder' ),
'memory_limit_not_increased' => esc_html__( "Your memory limit can't be changed automatically", 'et_builder' ),
'google_api_key' => et_pb_get_google_api_key(),
'options_page_url' => et_pb_get_options_page_link(),
'et_pb_google_maps_script_notice' => et_pb_enqueue_google_maps_script(),
'select_text' => esc_html__( 'Select', 'et_builder' ),
'et_fb_autosave_nonce' => wp_create_nonce( 'et_fb_autosave_nonce' ),
'et_builder_email_fetch_lists_nonce' => wp_create_nonce( 'et_builder_email_fetch_lists_nonce' ),
'et_builder_email_add_account_nonce' => wp_create_nonce( 'et_builder_email_add_account_nonce' ),
'et_builder_email_remove_account_nonce' => wp_create_nonce( 'et_builder_email_remove_account_nonce' ),
'et_pb_module_settings_migrations' => ET_Builder_Module_Settings_Migration::$migrated,
'acceptable_css_string_values' => et_builder_get_acceptable_css_string_values( 'all' ),
'upload_font_nonce' => wp_create_nonce( 'et_fb_upload_font_nonce' ),
'user_fonts' => et_builder_get_custom_fonts(),
'google_fonts' => et_builder_get_google_fonts(),
'supported_font_weights' => et_builder_get_font_weight_list(),
'supported_font_formats' => et_pb_get_supported_font_formats(),
'all_svg_icons' => et_pb_get_svg_icons_list(),
'library_get_layouts_data_nonce' => wp_create_nonce( 'et_builder_library_get_layouts_data' ),
'library_get_layout_nonce' => wp_create_nonce( 'et_builder_library_get_layout' ),
'library_update_account_nonce' => wp_create_nonce( 'et_builder_library_update_account' ),
'library_custom_tabs' => ET_Builder_Library::builder_library_modal_custom_tabs( $post_type ),
), et_pb_history_localization() ) ) );
$ab_settings = et_builder_ab_labels();
wp_localize_script( 'et_pb_admin_js', 'et_pb_ab_js_options', apply_filters( 'et_pb_ab_js_options', array(
'has_report' => et_pb_ab_has_report( $post->ID ),
'has_permission' => et_pb_is_allowed( 'ab_testing' ),
'refresh_interval_duration' => et_pb_ab_get_refresh_interval_duration( $post->ID ),
'refresh_interval_durations' => et_pb_ab_refresh_interval_durations(),
'analysis_formula' => et_pb_ab_get_analysis_formulas(),
'have_conversions' => et_pb_ab_get_modules_have_conversions(),
'sales_title' => esc_html__( 'Sales', 'et_builder' ),
'force_cache_purge' => $force_cache_update,
'total_title' => esc_html__( 'Total', 'et_builder' ),
'subjects_rank' => ( 'on' === get_post_meta( $post->ID, '_et_pb_use_builder', true ) ) ? et_pb_ab_get_saved_subjects_ranks( $post->ID ) : false,
'subjects_rank_color' => et_pb_ab_get_subject_rank_colors(),
'has_no_permission' => array(
'title' => esc_html__( 'Unauthorized Action', 'et_builder' ),
'desc' => esc_html__( 'You do not have permission to edit the module, row or section in this split test.', 'et_builder' ),
'select_ab_testing_subject' => $ab_settings['select_subject'],
'select_ab_testing_goal' => $ab_settings['select_goal'],
'configure_ab_testing_alternative' => $ab_settings['configure_alternative'],
'select_ab_testing_winner_first' => $ab_settings['select_winner_first'],
'select_ab_testing_subject_first' => $ab_settings['select_subject_first'],
'select_ab_testing_goal_first' => $ab_settings['select_goal_first'],
'cannot_select_subject_parent_as_goal' => $ab_settings['cannot_select_subject_parent_as_goal'],
'cannot_select_global_children_as_subject' => $ab_settings['cannot_select_global_children_as_subject'],
'cannot_select_global_children_as_goal' => $ab_settings['cannot_select_global_children_as_goal'],
'cannot_save_app_layout_has_ab_testing' => $ab_settings['cannot_save_app_layout_has_ab_testing'],
'cannot_save_section_layout_has_ab_testing' => $ab_settings['cannot_save_section_layout_has_ab_testing'],
'cannot_save_row_layout_has_ab_testing' => $ab_settings['cannot_save_row_layout_has_ab_testing'],
'cannot_save_row_inner_layout_has_ab_testing' => $ab_settings['cannot_save_row_inner_layout_has_ab_testing'],
'cannot_save_module_layout_has_ab_testing' => $ab_settings['cannot_save_module_layout_has_ab_testing'],
'cannot_load_layout_has_ab_testing' => $ab_settings['cannot_load_layout_has_ab_testing'],
'cannot_clear_layout_has_ab_testing' => $ab_settings['cannot_clear_layout_has_ab_testing'],
// Cannot Import / Export Layout (Portability)
'cannot_import_export_layout_has_ab_testing' => $ab_settings['cannot_import_export_layout_has_ab_testing'],
'cannot_move_module_goal_out_from_subject' => $ab_settings['cannot_move_module_goal_out_from_subject'],
'cannot_move_row_goal_out_from_subject' => $ab_settings['cannot_move_row_goal_out_from_subject'],
'cannot_move_goal_into_subject' => $ab_settings['cannot_move_goal_into_subject'],
'cannot_move_subject_into_goal' => $ab_settings['cannot_move_subject_into_goal'],
'cannot_clone_section_has_goal' => $ab_settings['cannot_clone_section_has_goal'],
'cannot_clone_row_has_goal' => $ab_settings['cannot_clone_row_has_goal'],
'cannot_remove_section_has_goal' => $ab_settings['cannot_remove_section_has_goal'],
'cannot_remove_row_has_goal' => $ab_settings['cannot_remove_row_has_goal'],
// Removing + Has Unremovable Subjects
'cannot_remove_section_has_unremovable_subject' => $ab_settings['cannot_remove_section_has_unremovable_subject'],
'cannot_remove_row_has_unremovable_subject' => $ab_settings['cannot_remove_row_has_unremovable_subject'],
// View stats summary table heading
'view_stats_thead_titles' => $ab_settings['view_stats_thead_titles'],
wp_localize_script( 'et_pb_admin_js', 'et_pb_help_options', apply_filters( 'et_pb_help_options', array(