: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
'<script type="text/template" id="et-builder-hover-options-tabs-template">
<div class="et_pb_mobile_settings_tabs et_pb_tabs_hover et_pb_tabs_hover_only">
<a href="#" class="et_pb_mobile_settings_tab et_pb_mobile_settings_active_tab et_pb_hover" data-settings_tab="default">
<a href="#" class="et_pb_mobile_settings_tab et_pb_hover" data-settings_tab="hover">
et_builder_i18n( 'Default' ),
esc_html__( 'Hover', 'et_builder' )
'<script type="text/template" id="et-builder-mobile-hover-options-tabs-template">
<div class="et_pb_mobile_settings_tabs et_pb_tabs_mobile et_pb_tabs_hover">
<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 et_pb_hover" data-settings_tab="hover">
<a href="#" class="et_pb_mobile_settings_tab et_pb_mobile" data-settings_tab="tablet">
<a href="#" class="et_pb_mobile_settings_tab et_pb_mobile" data-settings_tab="phone">
et_builder_i18n( 'Desktop' ),
esc_html__( 'Hover', 'et_builder' ),
et_builder_i18n( 'Tablet' ),
esc_html__( 'Smartphone', 'et_builder' )
'<script type="text/template" id="et-builder-hover-icon-template"><span class="et-pb-hover-settings-toggle" data-id="placeholder">
<svg width="18" height="18" viewBox="-2 -3 16 16">
<path d="M8.69 9.43l2.22-.84a.5.5 0 0 0 .19-.8L5.22 1.28A.7.7 0 0 0 4 1.75v8.73a.5.5 0 0 0 .68.47l2.14-.81 1 2.42a1 1 0 1 0 1.86-.75z"></path>
<input type="hidden" id="placeholder"/>
'<script type="text/template" id="et-builder-padding-option-template">
<%%= this.et_builder_template_options.padding.options.label %%>
<input type="text" class="et_custom_margin et_custom_margin_<%%= this.et_builder_template_options.padding.options.side %%><%%= this.et_builder_template_options.padding.options.class %%><%%= \'need_mobile\' === this.et_builder_template_options.padding.options.need_mobile ? \' et_pb_setting_mobile et_pb_setting_mobile_desktop et_pb_setting_mobile_active\' : \'\' %%>"<%%= \'need_mobile\' === this.et_builder_template_options.padding.options.need_mobile ? \' data-device="desktop"\' : \'\' %%> />
<%% if ( \'need_mobile\' === this.et_builder_template_options.padding.options.need_mobile ) { %%>
<input type="text" class="et_custom_margin et_pb_setting_mobile et_pb_setting_mobile_tablet et_custom_margin_<%%= this.et_builder_template_options.padding.options.side %%><%%= this.et_builder_template_options.padding.options.class %%>" data-device="tablet" />
<input type="text" class="et_custom_margin et_pb_setting_mobile et_pb_setting_mobile_phone et_custom_margin_<%%= this.et_builder_template_options.padding.options.side %%><%%= this.et_builder_template_options.padding.options.class %%>" data-device="phone" />
'<script type="text/template" id="et-builder-yes_no_button-option-template">
<div class="et_pb_yes_no_button et_pb_off_state">
<span class="et_pb_value_text et_pb_on_value"><%%= this.et_builder_template_options.yes_no_button.options.on %%></span>
<span class="et_pb_button_slider"></span>
<span class="et_pb_value_text et_pb_off_value"><%%= this.et_builder_template_options.yes_no_button.options.off %%></span>
'<script type="text/template" id="et-builder-animation_buttons-option-template">
<div class="et_pb_animation_buttons">
<% _.each(this.et_builder_template_options.animation_buttons.options, function(option_title, option_name) { %>
<div class="et_animation_button">
<span class="et_animation_button_title" data-value="<%= option_name %>"><%= option_title %></span>
<span class="et_animation_button_icon">
<svg viewBox="0 0 28 28" preserveAspectRatio="xMidYMid meet" shapeRendering="geometricPrecision"><%= this.et_builder_template_options.options_icons[ "animation-" + option_name ] %></svg>
'<script type="text/template" id="et-builder-background_tabs_nav-option-template">
<ul class="et_pb_background-tab-navs">
<% _.each(this.et_builder_template_options.background_tabs_nav.options, function(tab_nav_name, index) { %>
<li><a href="#" class="et_pb_background-tab-nav et_pb_background-tab-nav--<%= tab_nav_name %>" data-tab="<%= tab_nav_name %>" title="<%= tab_nav_name %>"><div class="et-pb-icon"><svg viewBox="0 0 28 28" preserveAspectRatio="xMidYMid meet" shapeRendering="geometricPrecision"><%= this.et_builder_template_options.options_icons[ "background-" + tab_nav_name ] %></svg></div></a></li>
'<script type="text/template" id="et-builder-background_gradient_buttons-option-template">
<div class="et-pb-option-preview et-pb-option-preview--empty">
<button class="et-pb-option-preview-button et-pb-option-preview-button--add">
<svg viewBox="0 0 28 28" preserveAspectRatio="xMidYMid meet" shapeRendering="geometricPrecision"><%= this.et_builder_template_options.options_icons[ "add" ] %></svg>
<button class="et-pb-option-preview-button et-pb-option-preview-button--swap">
<svg viewBox="0 0 28 28" preserveAspectRatio="xMidYMid meet" shapeRendering="geometricPrecision"><%= this.et_builder_template_options.options_icons[ "swap" ] %></svg>
<button class="et-pb-option-preview-button et-pb-option-preview-button--delete">
<svg viewBox="0 0 28 28" preserveAspectRatio="xMidYMid meet" shapeRendering="geometricPrecision"><%= this.et_builder_template_options.options_icons[ "delete" ] %></svg>
'<script type="text/template" id="et-builder-option_preview_buttons-option-template">
<div class="et-pb-option-preview et-pb-option-preview--empty">
<button class="et-pb-option-preview-button et-pb-option-preview-button--add">
<svg viewBox="0 0 28 28" preserveAspectRatio="xMidYMid meet" shapeRendering="geometricPrecision"><%= this.et_builder_template_options.options_icons[ "add" ] %></svg>
<button class="et-pb-option-preview-button et-pb-option-preview-button--edit">
<svg viewBox="0 0 28 28" preserveAspectRatio="xMidYMid meet" shapeRendering="geometricPrecision"><%= this.et_builder_template_options.options_icons[ "setting" ] %></svg>
<button class="et-pb-option-preview-button et-pb-option-preview-button--delete">
<svg viewBox="0 0 28 28" preserveAspectRatio="xMidYMid meet" shapeRendering="geometricPrecision"><%= this.et_builder_template_options.options_icons[ "delete" ] %></svg>
'<script type="text/template" id="et-builder-multiple_buttons-option-template">
<div class="et_pb_multiple_buttons">
<%% _.each(this.et_builder_template_options.multiple_buttons.options, function(button_options, button_id) { %%>
<div class="et_builder_<%%= button_id %%>_button et_builder_multiple_buttons_button mce-widget mce-btn" data-value="<%%= button_id %%>">
<%%= button_options.title %%>
'<script type="text/template" id="et-builder-font-weight-items">
<div class="et_pb_font_weight_container">
<label for="et_builder_font_weight">%1$s:</label>
<select class="et_builder_font_weight">
<%% _.each(this.et_builder_template_options.font_weights, function(font_weight_name, font_weight) { %%>
<option value="<%%= font_weight %%>"><%%= font_weight_name %%></option>
esc_html__( 'Font Weight', 'et_builder' )
'<script type="text/template" id="et-builder-font_buttons-option-template">
<div class="et_pb_font_style_container">
<label for="et_builder_font_style">%1$s:</label>
<%% _.each(this.et_builder_template_options.font_buttons.options, function(font_button) { %%>
<div class="et_builder_<%%= font_button %%>_font et_builder_font_style mce-widget mce-btn" data-button_name="<%%= font_button %%>">
<i class="mce-ico mce-i-<%%= font_button %%>"></i>
esc_html__( 'Font Style', 'et_builder' )
'<script type="text/template" id="et-builder-font_line_styles-option-template">
<div class="et_pb_font_line_settings">
<div class="et_pb_font_line_color">
<label for="et_builder_font_style" data-underline_label="%5$s %7$s" data-strikethrough_label="%6$s %7$s">%1$s:</label>
<span class="et-pb-custom-color-button et-pb-choose-custom-color-button"><span>%4$s</span></span>
<div class="et-pb-custom-color-container et_pb_hidden">
<input class="et-pb-color-picker-hex et-pb-color-picker-hex-alpha" type="text" data-alpha="true" placeholder="%2$s" data-selected-value="" value="" />
<input class="et-pb-custom-color-picker et-pb-font-line-color-value" type="hidden" value="" />
<div class="et_pb_font_line_style">
<label for="et_builder_font_style" data-underline_label="%5$s %8$s" data-strikethrough_label="%6$s %8$s">%3$s:</label>
<select class="et_pb_font_line_style_select">
<option value="solid">solid</option>
<option value="double">double</option>
<option value="dotted">dotted</option>
<option value="dashed">dashed</option>
<option value="wavy">wavy</option>
esc_html__( 'Line Color', 'et_builder' ),
esc_attr__( 'Hex Value', 'et_builder' ),
esc_attr__( 'Line Style', 'et_builder' ),
esc_attr__( 'Choose Custom Color', 'et_builder' ),
esc_attr__( 'Underline', 'et_builder' ),
esc_attr__( 'Strikethrough', 'et_builder' ),
esc_attr__( 'Color', 'et_builder' ),
esc_attr__( 'Style', 'et_builder' )
'<script type="text/template" id="et-builder-text-align-buttons-option-template">
<%% _.each(this.et_builder_template_options.text_align_buttons.options, function(text_align_button) { %%>
var text_align_button_classname = text_align_button === "justified" ? "justify" : text_align_button;
text_align_button_classname = text_align_button === "force_left" ? "left" : text_align_button_classname;
var text_align_button_type = this.et_builder_template_options.text_align_buttons.type;
<div class="et_builder_<%%= text_align_button %%>_text_align et_builder_text_align mce-widget mce-btn" data-value="<%%= text_align_button %%>">
<i class="mce-ico align-<%%= text_align_button_type %%> mce-i-align<%%= text_align_button_classname %%>"></i>
'<script type="text/template" id="et-builder-select-option-template">
<%% _.each(this.et_builder_template_options.select.options.list, function(option_label, option_value) {
var option_label_updated = option_label;
if ( _.isObject( option_label ) ) {
if ( ! _.isUndefined( option_label["data"] ) ) {
var data_key_name = _.keys( option_label["data"] );
data = " data-" + _.escape( data_key_name[0] ) + "=\'" + _.escape( option_label["data"][ data_key_name[0] ] ) + "\'";
var option_label_updated = option_label["value"];
var select_name = this.et_builder_template_options.select.options.select_name.replace( "data.", "" );
var select_value = this.et_builder_template_options.select.data[ select_name ];
var select_value_escaped = _.escape( select_value );
var option_value_escaped = _.escape( option_value );
var default_value = this.et_builder_template_options.select.options.default;
var selected_attr = ! _.isUndefined( select_value ) && "" !== select_value && option_value_escaped === select_value_escaped || ( _.isUndefined( select_value ) && default_value !== "" && option_value_escaped === default_value ) ? \' selected="selected"\' : "";
<option <%%= data %%> value="<%%= option_value_escaped %%>" <%%= selected_attr %%>><%%= _.escape( option_label_updated ) %%></option>
'<script type="text/template" id="et-builder-failure-notice-template">
et_core_esc_previously( et_builder_get_failure_notification_modal() )
'<script type="text/template" id="et-builder-cache-notice-template">
et_core_esc_previously( et_builder_get_cache_notification_modal() )
'<script type="text/template" id="et-builder-page-creation-template">
et_core_esc_previously( et_builder_page_creation_modal() )
'<script type="text/template" id="et-builder-help-template">
<h3 class="et-pb-settings-heading">%1$s</h3>
<ul class="et-pb-options-tabs-links et-pb-help-switcher">
<li class="et-pb-new-module et-pb-options-tabs-links-active" data-open_tab="et-pb-shortcuts-tab">
<div class="et-pb-main-settings et-pb-main-settings-full et-pb-shortcuts-tab active-container"></div>
esc_html__( 'Divi Builder Helper', 'et_builder' ),
esc_html__( 'Shortcuts', 'et_builder' )
do_action( 'et_pb_after_page_builder' );
* Returns builder settings markup
* @param array builder settings' configuration
* @return string builder settings' markup
function et_pb_get_builder_settings_fields( $options ) {
$defaults = et_pb_get_builder_settings_configuration_default();
foreach ( $options as $option ) {
$option = wp_parse_args( $option, $defaults );
$field_list_class = $type;
$affecting = ! empty( $option['affects'] ) ? implode( '|', $option['affects'] ) : '';
if ( $option['depends_show_if'] ) {
$field_list_class .= ' et-pb-display-conditionally';
if ( isset( $option['class'] ) ) {
$field_list_class .= ' ' . $option['class'];
'<div class="et_pb_prompt_field_list et-pb-option-container %1$s" data-id="%2$s" data-type="%3$s" data-autoload="%4$s" data-affects="%5$s" data-visibility-dependency="%6$s">',
esc_attr( $field_list_class ),
esc_attr( $option['id'] ),
esc_attr( $option['autoload'] ),
esc_attr( $option['depends_show_if'] )
switch ( $option['type'] ) {
$outputs .= sprintf('<label>%2$s</label>
<div class="et_pb_prompt_field">
<div class="et_pb_yes_no_button_wrapper ">
<div class="et_pb_yes_no_button et_pb_off_state">
<span class="et_pb_value_text et_pb_on_value">%3$s</span>
<span class="et_pb_button_slider"></span>
<span class="et_pb_value_text et_pb_off_value">%4$s</span>
<select name="%1$s" id="%1$s" class="et-pb-main-setting regular-text">
<option value="off">%5$s</option>
<option value="on">%6$s</option>
</div><span class="et-pb-reset-setting"></span>
esc_attr( $option['id'] ),
esc_html( $option['label'] ),
isset( $option['values'] ) ? esc_html( $option['values']['yes'] ) : et_builder_i18n( 'Yes' ),
isset( $option['values'] ) ? esc_html( $option['values']['no'] ) : et_builder_i18n( 'No' ),
et_builder_i18n( 'Off' ),
$outputs .= sprintf( '<label for="%1$s">%2$s</label>
<div class="et_pb_prompt_field">
<textarea id="%1$s" name="%1$s"%3$s></textarea>
esc_attr( $option['id'] ),
esc_html( $option['label'] ),
isset( $option['readonly'] ) && 'readonly' === $option['readonly'] ? ' readonly' : ''
$outputs .= sprintf( '<label>%1$s</label><div class="et_pb_prompt_field">', esc_html( $option['label'] ) );
$outputs .= '<div class="et_pb_colorpalette_overview">';
for ($colorpalette_index = 1; $colorpalette_index < 9; $colorpalette_index++ ) {
$outputs .= sprintf( '<span class="colorpalette-item colorpalette-item-%1$s" data-index="%1$s"></span>', esc_attr( $colorpalette_index ) );
for ($colorpicker_index = 1; $colorpicker_index < 9; $colorpicker_index++ ) {
$outputs .= sprintf('<div class="colorpalette-colorpicker" data-index="%2$s">
<input id="%1$s-%2$s" name="%1$s-%2$s" data-index="%2$s" type="text" class="input-colorpalette-colorpicker" data-alpha="true" />
esc_attr( $option['id'] ),
esc_attr( $colorpicker_index )
$outputs .= sprintf( '<label for="%1$s">%2$s</label>
<div class="et_pb_prompt_field">
<input id="%1$s" name="%1$s" type="text" class="input-colorpicker" data-alpha="true" data-default-color="%3$s" />
esc_attr( $option['id'] ),
esc_html( $option['label'] ),
esc_attr( $option['default'] )
$outputs .= sprintf( '<label for="%1$s">%2$s</label>
<div class="et_pb_prompt_field">
<input id="%1$s" name="%1$s" type="range" class="range" step="%3$s" min="%4$s" max="%5$s" />
esc_attr( $option['id'] ),
esc_html( $option['label'] ),
esc_attr( $option['range_settings']['step'] ),
esc_attr( $option['range_settings']['min'] ),
esc_attr( $option['range_settings']['max'] )
foreach( $option['options'] as $value => $text ) {
$options .= sprintf( '<option value="%1$s">%2$s</option>',
$outputs .= sprintf( '<label for="%1$s">%2$s</label>
<div class="et_pb_prompt_field">
<select id="%1$s" name="%1$s">
esc_attr( $option['id'] ),
esc_html( $option['label'] ),
et_core_esc_previously( $options )
$outputs .= sprintf( '</div><!-- .et_pb_prompt_field_list.et-pb-option-container.%1$s -->', esc_attr( $option['type'] ) );
* Prints hidden inputs for passing settings data to database
function et_pb_builder_settings_hidden_inputs( $post_id ) {
if ( ! class_exists( 'ET_Builder_Settings' ) ) {
$settings = ET_Builder_Settings::get_fields();
$defaults = et_pb_get_builder_settings_configuration_default();
if ( empty( $settings ) ) {
if ( empty( $settings ) ) {
foreach ( $settings as $setting ) {
$setting = wp_parse_args( $setting, $defaults );
if ( ! $setting['autoload'] ) {
$id = '_' . $setting['id'];
$meta_key = isset( $setting['meta_key'] ) ? $setting['meta_key'] : $id;
$value = get_post_meta( $post_id, $meta_key, true );
if ( ( ! $value || '' === $value ) && $setting['default'] ) {
$value = $setting['default'];
'<input type="hidden" id="%1$s" name="%1$s" value="%2$s" />',