: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
$layout_categories = get_terms( 'layout_category', array( 'hide_empty' => false ) );
$categories_output = sprintf( '<div class="et-pb-option"><label>%1$s</label>',
esc_html__( 'Add To Categories:', 'et_builder' )
if ( is_array( $layout_categories ) && ! empty( $layout_categories ) ) {
$categories_output .= '<div class="et-pb-option-container layout_cats_container">';
foreach( $layout_categories as $category ) {
$categories_output .= sprintf( '<label>%1$s<input type="checkbox" value="%2$s"/></label>',
esc_html( $category->name ),
esc_attr( $category->term_id )
$categories_output .= '</div></div>';
$categories_output .= sprintf( '
<div class="et-pb-option">
<div class="et-pb-option-container">
<input type="text" value="" id="et_pb_new_cat_name" class="regular-text" />
esc_html__( 'Create New Category', 'et_builder' )
$general_checkbox = sprintf(
%1$s <input type="checkbox" value="general" id="et_pb_template_general" checked />
esc_html__( 'Include General settings', 'et_builder' )
$advanced_checkbox = sprintf(
%1$s <input type="checkbox" value="advanced" id="et_pb_template_advanced" checked />
esc_html__( 'Include Advanced Design settings', 'et_builder' )
%1$s <input type="checkbox" value="css" id="et_pb_template_css" checked />
esc_html__( 'Include Custom CSS', 'et_builder' )
'<script type="text/template" id="et-builder-prompt-modal-save_template-text">
<div class="et-pb-main-settings">
<div class="et-pb-option">
<div class="et-pb-option-container">
<input type="text" value="" id="et_pb_new_template_name" class="regular-text" />
<%% if ( \'global\' !== is_global && \'global\' !== is_global_child ) { %%>
<div class="et-pb-option">
<div class="et-pb-option-container">
%4$s <input type="checkbox" value="" id="et_pb_template_global" />
esc_html__( 'Here you can save the current item and add it to your Divi Library for later use as well.', 'et_builder' ),
esc_html__( 'Template Name', 'et_builder' ),
esc_html__( 'Save as Global:', 'et_builder' ),
esc_html__( 'Make this a global item', 'et_builder' ),
et_core_esc_previously( $categories_output )
// Prompt Modal Window Template
'<script type="text/template" id="et-builder-prompt-modal">
<div class="et_pb_prompt_modal">
<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
<div class="et_pb_prompt_buttons">
<a href="#" class="et_pb_prompt_proceed">%2$s</a>
// "Open Settings" Modal Window Template
'<script type="text/template" id="et-builder-prompt-modal-open_settings">
<div class="et_pb_prompt_modal">
<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
<div class="et_pb_prompt_buttons">
<input type="submit" class="et_pb_prompt_proceed" value="%2$s" />
et_builder_i18n( 'Cancel' ),
esc_html__( 'Save', 'et_builder' )
$utils = ET_Core_Data_Utils::instance();
// Filter out fields not supposed to show in BB
foreach (ET_Builder_Settings::get_fields() as $key => $field) {
if ( true === $utils->array_get( $field, 'show_in_bb', true ) ) {
// "Open Settings" Modal Content Template
'<script type="text/template" id="et-builder-prompt-modal-open_settings-text">
<div class="et_pb_prompt_fields">
</div><!-- .et_pb_prompt_fields -->
esc_html__( 'Divi Builder Settings', 'et_builder' ),
et_core_esc_previously( et_pb_get_builder_settings_fields( $fields ) )
$ab_testing = et_builder_ab_labels();
// "Turn off AB Testing" Modal Window Template
'<script type="text/template" id="et-builder-prompt-modal-turn_off_ab_testing">
<div class="et_pb_prompt_modal">
<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
<div class="et_pb_prompt_buttons">
<input type="submit" class="et_pb_prompt_proceed" value="%2$s" />
et_builder_i18n( 'Cancel' ),
// "Turn off AB Testing" Modal Content Template
'<script type="text/template" id="et-builder-prompt-modal-turn_off_ab_testing-text">
esc_html__( 'End Split Test?', 'et_builder' ),
esc_html__( 'Upon ending your split test, you will be asked to select which subject variation you would like to keep. Remaining subjects will be removed.', 'et_builder' ),
esc_html__( 'Note: this process cannot be undone.', 'et_builder' )
// AB Testing Alert :: Modal Window Template
'<script type="text/template" id="et-builder-prompt-modal-ab_testing_alert">
<div class="et_pb_prompt_modal">
<div class="et_pb_prompt_buttons">
<input type="submit" class="et_pb_prompt_proceed" value="%1$s" />
esc_html__( 'Ok', 'et_builder' )
// AB Testing Alert :: Modal Content Template
'<script type="text/template" id="et-builder-prompt-modal-ab_testing_alert-text">
<%% if ( ! _.isUndefined( et_pb_ab_js_options[id] ) ) { %%>
<h3><%%= et_pb_ab_js_options[id].title %%></h3>
<p><%%= et_pb_ab_js_options[id].desc %%></p>
esc_html__( 'An Error Occurred', 'et_builder' ),
esc_html__( 'For some reason, you cannot perform this task.', 'et_builder' )
// AB Testing Alert Yes/No :: Modal Window Template
'<script type="text/template" id="et-builder-prompt-modal-ab_testing_alert_yes_no">
<div class="et_pb_prompt_modal">
<div class="et_pb_prompt_buttons">
<button class="et_pb_prompt_proceed_alternative et_pb_prompt_cancel">%1$s</button>
<input type="submit" class="et_pb_prompt_proceed has_alternative has_cancel_alternative" value="%2$s" />
et_builder_i18n( 'Cancel' ),
esc_html__( 'Proceed', 'et_builder' )
// AB Testing Alert Yes/No :: Modal Content Template
'<script type="text/template" id="et-builder-prompt-modal-ab_testing_alert_yes_no-text">
<%% if ( ! _.isUndefined( et_pb_ab_js_options[id] ) ) { %%>
<h3><%%= et_pb_ab_js_options[id].title %%></h3>
<p><%%= et_pb_ab_js_options[id].desc %%></p>
esc_html__( 'An Error Occurred', 'et_builder' ),
esc_html__( 'For some reason, you cannot perform this task.', 'et_builder' )
* Split Testing :: Set global item winner status
'<script type="text/template" id="et-builder-prompt-modal-set_global_subject_winner">
<div class="et_pb_prompt_modal">
<div class="et_pb_prompt_buttons">
<button class="et_pb_prompt_proceed_alternative">%1$s</button>
<input type="submit" class="et_pb_prompt_proceed has_alternative" value="%2$s" />
et_core_esc_previously( $ab_testing['set_global_winner_status']['cancel'] ),
et_core_esc_previously( $ab_testing['set_global_winner_status']['proceed'] )
// AB Testing :: Set global item winner status template
'<script type="text/template" id="et-builder-prompt-modal-set_global_subject_winner-text">
et_core_esc_previously( $ab_testing['set_global_winner_status']['title'] ),
et_core_esc_previously( $ab_testing['set_global_winner_status']['desc'] ),
et_core_esc_previously( $ab_testing['set_global_winner_status']['option_1'] ),
et_core_esc_previously( $ab_testing['set_global_winner_status']['option_2'] )
* AB Testing :: View Stats Template
'<script type="text/template" id="et-builder-prompt-modal-view_ab_stats">
<div class="et_pb_prompt_modal et_pb_ab_view_stats">
<a href="#" class="et_pb_prompt_dont_proceed et-pb-modal-close">
et_builder_i18n( 'Cancel' )
foreach ( et_pb_ab_get_analysis_types() as $analysis ) {
$view_stats_tabs .= sprintf(
'<div class="view-stats-tab tab-%1$s" data-analysis="%1$s">
<ul class="et-pb-ab-view-stats-time-filter">
<li><a href="#" data-duration="day">%2$s</a></li>
<li><a href="#" data-duration="week">%3$s</a></li>
<li><a href="#" data-duration="month">%4$s</a></li>
<li><a href="#" data-duration="all">%5$s</a></li>
</ul><!-- .et-pb-ab-view-stats-time-filter -->
<ul class="et-pb-ab-view-stats-subjects-filter">
</ul><!-- .et-pb-ab-view-stats-subjects-filter -->
<div class="view-stats-main-stats">
<canvas id="ab-testing-stats-%1$s" class="ab-testing-stats" width="913" height="330"></canvas>
<h2 class="sub-heading">%6$s</h2>
<div class="view-stats-table-wrapper">
<table id="view-stats-table-%1$s" class="view-stats-table">
</div><!-- .view-stats-table-wrapper -->
<div class="view-stats-pie-wrapper">
<canvas id="ab-testing-stats-pie-%1$s" class="ab-testing-stats-pie" width="200" height="200"></canvas>
<ul class="ab-testing-stats-pie-legends">
</ul><!-- .ab-testing-stats-pie-legends -->
</div><!-- .view-stats-pie-wrapper -->
<object type="image/svg+xml" data="%7$s/images/stats-no-data.svg"></object>
esc_html__( 'Last 24 Hours', 'et_builder' ),
esc_html__( 'Last 7 Days', 'et_builder' ),
esc_html__( 'Last Month', 'et_builder' ),
esc_html__( 'All Time', 'et_builder' ),
esc_html__( 'Summary & Data', 'et_builder' ),
esc_url( ET_BUILDER_URI ),
esc_html__( 'Statistics are still being collected for this time frame', 'et_builder' ),
esc_html__( 'Stats will be displayed upon sufficient data collection', 'et_builder' )
// AB Testing :: View Stats content
'<script type="text/template" id="et-builder-prompt-modal-view_ab_stats-text">
<ul class="et-pb-options-tabs-links">
<li class="et_pb_options_tab_ab_stat_conversion et-pb-options-tabs-links-active" data-analysis="conversions">
<li class="et_pb_options_tab_ab_stat_clicks" data-analysis="clicks">
<li class="et_pb_options_tab_ab_stat_reads" data-analysis="reads">
<li class="et_pb_options_tab_ab_stat_bounces" data-analysis="bounces">
<li class="et_pb_options_tab_ab_stat_engagements" data-analysis="engagements">
<li class="et_pb_options_tab_ab_stat_shortcode_conversions" data-analysis="shortcode_conversions">
<li class="et_pb_ab_refresh_button">
<a href="#" class="et-pb-ab-refresh-stats" title="%11$s">
<span class="icon"></span><span class="label">%12$s</span>
</ul><!-- .et-pb-options-tabs-links -->
<div class="et-pb-ab-view-stats-content has-data">
<div class="et-pb-ab-view-stats-content no-data">
<object type="image/svg+xml" data="%8$s/images/stats-no-data.svg"></object>
<div class="et_pb_prompt_buttons">
<input type="submit" class="et_pb_prompt_proceed" value="%14$s">
esc_html__( 'Split Testing Statistics', 'et_builder' ),
esc_html__( 'Clicks', 'et_builder' ),
esc_html__( 'Reads', 'et_builder' ),
esc_html__( 'Bounces', 'et_builder' ),
esc_html__( 'Goal Engagement', 'et_builder' ), // 5
esc_html__( 'Conversions', 'et_builder' ),
et_core_esc_previously( $view_stats_tabs ),
esc_url( ET_BUILDER_URI ),
esc_html__( 'Statistics are being collected', 'et_builder' ),
esc_html__( 'Stats will be displayed upon sufficient data collection', 'et_builder' ), // 10
esc_attr__( 'Refresh Stats', 'et_builder' ),
esc_html__( 'Refresh Stats', 'et_builder' ),
esc_html__( 'Shortcode Conversions', 'et_builder' ),
esc_attr__( 'End Split Test & Pick Winner', 'et_builder' )
// "Add Specialty Section" Button Template
'<script type="text/template" id="et-builder-add-specialty-section-button">
<a href="#" class="et-pb-section-add-specialty et-pb-add-specialty-template" data-is_template="true">%1$s</a>
esc_html__( 'Add Specialty Section', 'et_builder' )
'<script type="text/template" id="et-builder-saved-entry">
<a class="et_pb_saved_entry_item"><%= title %></a>
// Font Family Select Template
$font_marker = et_pb_is_allowed( 'custom_fonts_management' ) ? '<span class="et-pb-user-font-marker"></span>' : '';
$upload_button = et_pb_is_allowed( 'custom_fonts_management' ) ? sprintf( '<input type="button" class="button button-upload et-pb-font-upload-button" value="%1$s">', esc_html__( 'Upload', 'et_builder' ) ) : '';
'<script type="text/template" id="et-builder-google-fonts-options-items">
<li class="et-pb-option-subgroup et-pb-option-subgroup-uploaded">
<p class="et-pb-subgroup-title">%1$s</p>
<ul class="et-pb-option-subgroup-container">
<%% _.each(this.et_builder_template_options.user_fonts, function(font_data, font_name) { %%>
<li class="select-option-item select-option-item-custom-font select-option-item-<%%= font_name.replace( / /g, "_" ) %%>" data-value="<%%= font_name %%>"><%%= font_name %%>%2$s</li>
esc_html__( 'Uploaded', 'et_builder' ),
et_core_intentionally_unescaped( $font_marker, 'fixed_string' ),
et_core_esc_previously( $upload_button ),
et_core_esc_previously( et_builder_get_google_font_items() )
'<script type="text/template" id="et-builder-font-icon-list-items">
et_core_esc_previously( et_pb_get_font_icon_list_items() )
// Histories Visualizer Item Template
'<script type="text/template" id="et-builder-histories-visualizer-item-template">
<li id="et-pb-history-<%%= this.options.get( "timestamp" ) %%>" class="<%%= this.options.get( "current_active_history" ) ? "active" : "undo" %%>" data-timestamp="<%%= this.options.get( "timestamp" ) %%>">
<span class="datetime"><%%= this.options.get( "datetime" ) %%></span>
<span class="verb"> <%%= this.getVerb() %%></span>
<span class="noun"> <%%= this.getNoun() %%></span>
<%% if ( typeof this.getAddition === "function" && "" !== this.getAddition() ) { %%>
<span class="addition"> <%%= this.getAddition() %%></span>
// Font Down Icons Template
'<script type="text/template" id="et-builder-font-down-icon-list-items">
et_core_esc_previously( et_pb_get_font_down_icon_list_items() )
'<script type="text/template" id="et-builder-preview-icons-template">
<ul class="et-pb-preview-screensize-switcher">
<li><a href="#" class="et-pb-preview-mobile" data-width="375"><span class="label">%1$s</span></a></li>
<li><a href="#" class="et-pb-preview-tablet" data-width="768"><span class="label">%2$s</span></a></li>
<li><a href="#" class="et-pb-preview-desktop active"><span class="label">%3$s</span></a></li>
esc_html__( 'Mobile', 'et_builder' ),
et_builder_i18n( 'Tablet' ),
et_builder_i18n( 'Desktop' )
'<script type="text/template" id="et-builder-options-tabs-links-template">
<ul class="et-pb-options-tabs-links">
<%% _.each(this.et_builder_template_options.tabs.options, function(tab, index) { %%>
<li class="et_pb_options_tab_<%%= tab.slug %%><%%= \'1\' === index ? \' et-pb-options-tabs-links-active\' : \'\' %%>">
<a href="#"><%%= tab.label %%></a>
'<script type="text/template" id="et-builder-mobile-options-tabs-template">
<div class="et_pb_mobile_settings_tabs et_pb_tabs_mobile">
<a href="#" class="et_pb_mobile_settings_tab et_pb_mobile_settings_active_tab" data-settings_tab="desktop">
<a href="#" class="et_pb_mobile_settings_tab" data-settings_tab="tablet">
<a href="#" class="et_pb_mobile_settings_tab" data-settings_tab="phone">
et_builder_i18n( 'Desktop' ),
et_builder_i18n( 'Tablet' ),
esc_html__( 'Smartphone', 'et_builder' )