: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
$background_image = et_pb_responsive_options()->get_inheritance_background_value( $this->props, "{$attr_prefix}image", $mode, $base_name, $this->fields_unprocessed );
$parallax = $is_hover ? et_pb_hover_options()->get_raw_value( "parallax", $this->props ) : et_pb_responsive_options()->get_any_value( $this->props, "parallax{$suffix}", '', true );
$parallax_method = $is_hover ? et_pb_hover_options()->get_raw_value( "parallax_method", $this->props ) : et_pb_responsive_options()->get_any_value( $this->props, "parallax_method{$suffix}", '', true );
// B.2. Set default value for parallax and parallax method on hover when they are empty.
$parallax = empty( $parallax ) ? et_pb_responsive_options()->get_any_value( $this->props, "parallax", '', true ) : $parallax;
$parallax_method = empty( $parallax_method ) ? et_pb_responsive_options()->get_any_value( $this->props, "parallax_method", '', true ) : $parallax_method;
// B.3. Override background image with featured image if needed.
if ( 'on' === $featured_image && 'background' === $featured_placement && '' !== $featured_image_src ) {
$background_image = $featured_image_src;
// C.1. Parallax BG Class to inform if other modes exist.
$parallax_classname = array();
if ( ( '_tablet' === $suffix || '' === $suffix ) && in_array( '_phone', $parallax_processed ) ) {
$parallax_classname[] = 'et_parallax_bg_phone_exist';
if ( '' === $suffix && in_array( '_tablet', $parallax_processed ) ) {
$parallax_classname[] = 'et_parallax_bg_tablet_exist';
if ( in_array( $hover_suffix, $parallax_processed ) ) {
$parallax_classname[] = 'et_parallax_bg_hover_exist';
// C.2. Set up parallax class and wrapper.
if ( '' !== $background_image && 'on' === $parallax ) {
$parallax_classname[] = 'et_parallax_bg';
if ( 'off' === $parallax_method ) {
$parallax_classname[] = 'et_pb_parallax_css';
$inner_shadow = $this->props['inner_shadow'];
if ( 'off' !== $inner_shadow ) {
$parallax_classname[] = 'et_pb_inner_shadow';
// Parallax BG Class with suffix.
$parallax_classname[] = "et_parallax_bg{$suffix}";
$parallax_background .= sprintf(
'<div class="et_parallax_bg_wrap"><div
style="background-image: url(%2$s);"
esc_attr( implode( ' ', $parallax_classname ) ),
esc_url( $background_image )
// set `.et_parallax_bg_wrap` border-radius
et_set_parallax_bg_wrap_border_radius( $this->props, $this->slug, '%%order_class%%' );
// C.3. Hover parallax class.
if ( '' !== $background_image && $is_hover ) {
$this->add_classname( 'et_pb_section_parallax_hover' );
array_push( $parallax_processed, $suffix );
// Added classname for module wrapper
if ( '' !== $parallax_background ) {
$this->add_classname( 'et_pb_section_parallax' );
return $parallax_background;
function render( $atts, $content = null, $function_name ) {
$multi_view = et_pb_multi_view_options( $this );
$background_video_mp4 = $this->props['background_video_mp4'];
$background_video_webm = $this->props['background_video_webm'];
$inner_shadow = $this->props['inner_shadow'];
$parallax = $this->props['parallax'];
$parallax_method = $this->props['parallax_method'];
$fullwidth = $this->props['fullwidth'];
$specialty = $this->props['specialty'];
$background_color_1 = $this->props['background_color_1'];
$background_color_2 = $this->props['background_color_2'];
$background_color_3 = $this->props['background_color_3'];
$bg_img_1 = $this->props['bg_img_1'];
$bg_img_2 = $this->props['bg_img_2'];
$bg_img_3 = $this->props['bg_img_3'];
$background_size_1 = $this->props['background_size_1'];
$background_size_2 = $this->props['background_size_2'];
$background_size_3 = $this->props['background_size_3'];
$background_position_1 = $this->props['background_position_1'];
$background_position_2 = $this->props['background_position_2'];
$background_position_3 = $this->props['background_position_3'];
$background_repeat_1 = $this->props['background_repeat_1'];
$background_repeat_2 = $this->props['background_repeat_2'];
$background_repeat_3 = $this->props['background_repeat_3'];
$background_blend_1 = $this->props['background_blend_1'];
$background_blend_2 = $this->props['background_blend_2'];
$background_blend_3 = $this->props['background_blend_3'];
$parallax_1 = $this->props['parallax_1'];
$parallax_2 = $this->props['parallax_2'];
$parallax_3 = $this->props['parallax_3'];
$parallax_method_1 = $this->props['parallax_method_1'];
$parallax_method_2 = $this->props['parallax_method_2'];
$parallax_method_3 = $this->props['parallax_method_3'];
$padding_top_1 = $this->props['padding_top_1'];
$padding_right_1 = $this->props['padding_right_1'];
$padding_bottom_1 = $this->props['padding_bottom_1'];
$padding_left_1 = $this->props['padding_left_1'];
$padding_top_2 = $this->props['padding_top_2'];
$padding_right_2 = $this->props['padding_right_2'];
$padding_bottom_2 = $this->props['padding_bottom_2'];
$padding_left_2 = $this->props['padding_left_2'];
$padding_top_3 = $this->props['padding_top_3'];
$padding_right_3 = $this->props['padding_right_3'];
$padding_bottom_3 = $this->props['padding_bottom_3'];
$padding_left_3 = $this->props['padding_left_3'];
$padding_1_tablet = $this->props['padding_1_tablet'];
$padding_2_tablet = $this->props['padding_2_tablet'];
$padding_3_tablet = $this->props['padding_3_tablet'];
$padding_1_phone = $this->props['padding_1_phone'];
$padding_2_phone = $this->props['padding_2_phone'];
$padding_3_phone = $this->props['padding_3_phone'];
$padding_1_last_edited = $this->props['padding_1_last_edited'];
$padding_2_last_edited = $this->props['padding_2_last_edited'];
$padding_3_last_edited = $this->props['padding_3_last_edited'];
$gutter_width = $this->props['gutter_width'];
$gutter_width_hover = $this->get_hover_value( 'gutter_width' );
$make_equal = $this->props['make_equal'];
$global_module = $this->props['global_module'];
$use_custom_gutter = $this->props['use_custom_gutter'];
$module_id_1 = $this->props['module_id_1'];
$module_id_2 = $this->props['module_id_2'];
$module_id_3 = $this->props['module_id_3'];
$module_class_1 = $this->props['module_class_1'];
$module_class_2 = $this->props['module_class_2'];
$module_class_3 = $this->props['module_class_3'];
$custom_css_before_1 = $this->props['custom_css_before_1'];
$custom_css_before_2 = $this->props['custom_css_before_2'];
$custom_css_before_3 = $this->props['custom_css_before_3'];
$custom_css_main_1 = $this->props['custom_css_main_1'];
$custom_css_main_2 = $this->props['custom_css_main_2'];
$custom_css_main_3 = $this->props['custom_css_main_3'];
$custom_css_after_1 = $this->props['custom_css_after_1'];
$custom_css_after_2 = $this->props['custom_css_after_2'];
$custom_css_after_3 = $this->props['custom_css_after_3'];
$custom_css_before_1_hover = $this->get_hover_value( 'custom_css_before_1' );
$custom_css_before_2_hover = $this->get_hover_value( 'custom_css_before_2' );
$custom_css_before_3_hover = $this->get_hover_value( 'custom_css_before_3' );
$custom_css_main_1_hover = $this->get_hover_value( 'custom_css_main_1' );
$custom_css_main_2_hover = $this->get_hover_value( 'custom_css_main_2' );
$custom_css_main_3_hover = $this->get_hover_value( 'custom_css_main_3' );
$custom_css_after_1_hover = $this->get_hover_value( 'custom_css_after_1' );
$custom_css_after_2_hover = $this->get_hover_value( 'custom_css_after_2' );
$custom_css_after_3_hover = $this->get_hover_value( 'custom_css_after_3' );
$use_background_color_gradient_1 = $this->props['use_background_color_gradient_1'];
$use_background_color_gradient_2 = $this->props['use_background_color_gradient_2'];
$use_background_color_gradient_3 = $this->props['use_background_color_gradient_3'];
$background_color_gradient_type_1 = $this->props['background_color_gradient_type_1'];
$background_color_gradient_type_2 = $this->props['background_color_gradient_type_2'];
$background_color_gradient_type_3 = $this->props['background_color_gradient_type_3'];
$background_color_gradient_direction_1 = $this->props['background_color_gradient_direction_1'];
$background_color_gradient_direction_2 = $this->props['background_color_gradient_direction_2'];
$background_color_gradient_direction_3 = $this->props['background_color_gradient_direction_3'];
$background_color_gradient_direction_radial_1 = $this->props['background_color_gradient_direction_radial_1'];
$background_color_gradient_direction_radial_2 = $this->props['background_color_gradient_direction_radial_2'];
$background_color_gradient_direction_radial_3 = $this->props['background_color_gradient_direction_radial_3'];
$background_color_gradient_start_1 = $this->props['background_color_gradient_start_1'];
$background_color_gradient_start_2 = $this->props['background_color_gradient_start_2'];
$background_color_gradient_start_3 = $this->props['background_color_gradient_start_3'];
$background_color_gradient_end_1 = $this->props['background_color_gradient_end_1'];
$background_color_gradient_end_2 = $this->props['background_color_gradient_end_2'];
$background_color_gradient_end_3 = $this->props['background_color_gradient_end_3'];
$background_color_gradient_start_position_1 = $this->props['background_color_gradient_start_position_1'];
$background_color_gradient_start_position_2 = $this->props['background_color_gradient_start_position_2'];
$background_color_gradient_start_position_3 = $this->props['background_color_gradient_start_position_3'];
$background_color_gradient_end_position_1 = $this->props['background_color_gradient_end_position_1'];
$background_color_gradient_end_position_2 = $this->props['background_color_gradient_end_position_2'];
$background_color_gradient_end_position_3 = $this->props['background_color_gradient_end_position_3'];
$background_color_gradient_overlays_image_1 = $this->props['background_color_gradient_overlays_image_1'];
$background_color_gradient_overlays_image_2 = $this->props['background_color_gradient_overlays_image_2'];
$background_color_gradient_overlays_image_3 = $this->props['background_color_gradient_overlays_image_3'];
$background_video_mp4_1 = $this->props['background_video_mp4_1'];
$background_video_mp4_2 = $this->props['background_video_mp4_2'];
$background_video_mp4_3 = $this->props['background_video_mp4_3'];
$background_video_webm_1 = $this->props['background_video_webm_1'];
$background_video_webm_2 = $this->props['background_video_webm_2'];
$background_video_webm_3 = $this->props['background_video_webm_3'];
$background_video_width_1 = $this->props['background_video_width_1'];
$background_video_width_2 = $this->props['background_video_width_2'];
$background_video_width_3 = $this->props['background_video_width_3'];
$background_video_height_1 = $this->props['background_video_height_1'];
$background_video_height_2 = $this->props['background_video_height_2'];
$background_video_height_3 = $this->props['background_video_height_3'];
$allow_player_pause_1 = $this->props['allow_player_pause_1'];
$allow_player_pause_2 = $this->props['allow_player_pause_2'];
$allow_player_pause_3 = $this->props['allow_player_pause_3'];
$background_video_pause_outside_viewport_1 = $this->props['background_video_pause_outside_viewport_1'];
$background_video_pause_outside_viewport_2 = $this->props['background_video_pause_outside_viewport_2'];
$background_video_pause_outside_viewport_3 = $this->props['background_video_pause_outside_viewport_3'];
$prev_background_color = $this->props['prev_background_color'];
$next_background_color = $this->props['next_background_color'];
$is_background_responsive = et_pb_responsive_options()->is_responsive_enabled( $this->props, 'background' );
global $et_pb_rendering_specialty_section;
// Check Background Image.
$background_image = $this->props['background_image'];
if ( '' === $background_image && $is_background_responsive ) {
$background_image_tablet = et_pb_responsive_options()->get_inheritance_background_value( $this->props, 'background_image', 'tablet' );
$background_image_phone = et_pb_responsive_options()->get_inheritance_background_value( $this->props, 'background_image', 'phone' );
$background_image = '' !== $background_image_tablet ? $background_image_tablet : $background_image_phone;
$background_color = et_pb_responsive_options()->get_inheritance_background_value( $this->props, 'background_color', 'desktop' );
$background_color_tablet = '';
$background_color_phone = '';
$processed_background_color = $this->is_initial_background_color() ? 'inherit' : $background_color;
$processed_background_color_tablet = '';
$processed_background_color_phone = '';
if ( $is_background_responsive ) {
$background_color_tablet = et_pb_responsive_options()->get_inheritance_background_value( $this->props, 'background_color', 'tablet' );
$background_color_phone = et_pb_responsive_options()->get_inheritance_background_value( $this->props, 'background_color', 'phone' );
$processed_background_color_tablet = $this->is_initial_background_color( 'tablet' ) ? 'inherit' : $background_color_tablet;
$processed_background_color_phone = $this->is_initial_background_color( 'phone' ) ? 'inherit' : $background_color_phone;
$hover = et_pb_hover_options();
if ( '' !== $global_module ) {
$global_content = et_pb_load_global_module( $global_module, '', $prev_background_color, $next_background_color );
if ( '' !== $global_content ) {
return do_shortcode( et_pb_fix_shortcodes( wpautop( $global_content ) ) );
if ( 'on' === $specialty ) {
global $et_pb_all_column_settings, $et_pb_rendering_column_content, $et_pb_rendering_column_content_row;
$et_pb_all_column_settings_backup = $et_pb_all_column_settings;
$et_pb_all_column_settings = ! isset( $et_pb_all_column_settings ) ? array() : $et_pb_all_column_settings;
if ('on' === $make_equal) {
$this->add_classname( 'et_pb_equal_columns' );
if ( 'on' === $use_custom_gutter && '' !== $gutter_width ) {
$gutter_width = '0' === $gutter_width ? '1' : $gutter_width; // set the gutter to 1 if 0 entered by user
$gutter_class .= ' et_pb_gutters' . $gutter_width;
if ( et_builder_is_hover_enabled( 'gutter_width', $this->props ) && ! empty( $gutter_width_hover ) && $gutter_width !== $gutter_width_hover ) {
$gutter_class .= ' et_pb_gutter_hover';
$gutter_hover_data = sprintf(
' data-original_gutter="%1$s" data-hover_gutter="%2$s"',
esc_attr($gutter_width_hover)
// Column hover backgrounds
$column_hover_backgrounds = array();
for ( $i = 0; $i <= 3; $i ++ ) {
$column_hover_backgrounds = array_merge( $column_hover_backgrounds, array(
"column_{$i}_color_hover" => $hover->get_value( "background_color_{$i}", $this->props, false ),
"column_{$i}_color_hover_enabled" => $hover->is_enabled( "background_color_{$i}", $this->props ),
$et_pb_column_backgrounds = array(
'color' => $background_color_1,
'color_hover' => $column_hover_backgrounds['column_1_color_hover'],
'color_hover_enabled' => $column_hover_backgrounds['column_1_color_hover_enabled'],
'image_size' => $background_size_1,
'image_position' => $background_position_1,
'image_repeat' => $background_repeat_1,
'image_blend' => $background_blend_1,
'color' => $background_color_2,
'color_hover' => $column_hover_backgrounds['column_2_color_hover'],
'color_hover_enabled' => $column_hover_backgrounds['column_2_color_hover_enabled'],
'image_size' => $background_size_2,
'image_position' => $background_position_2,
'image_repeat' => $background_repeat_2,
'image_blend' => $background_blend_2,
'color' => $background_color_3,
'color_hover' => $column_hover_backgrounds['column_3_color_hover'],
'color_hover_enabled' => $column_hover_backgrounds['column_3_color_hover_enabled'],
'image_size' => $background_size_3,
'image_position' => $background_position_3,
'image_repeat' => $background_repeat_3,
'image_blend' => $background_blend_3,
$et_pb_column_backgrounds_gradient = array(
'active' => $use_background_color_gradient_1,
'type' => $background_color_gradient_type_1,
'direction' => $background_color_gradient_direction_1,
'radial_direction' => $background_color_gradient_direction_radial_1,
'color_start' => $background_color_gradient_start_1,
'color_end' => $background_color_gradient_end_1,
'start_position' => $background_color_gradient_start_position_1,
'end_position' => $background_color_gradient_end_position_1,
'overlays_image' => $background_color_gradient_overlays_image_1,
'active' => $use_background_color_gradient_2,
'type' => $background_color_gradient_type_2,
'direction' => $background_color_gradient_direction_2,
'radial_direction' => $background_color_gradient_direction_radial_2,
'color_start' => $background_color_gradient_start_2,
'color_end' => $background_color_gradient_end_2,
'start_position' => $background_color_gradient_start_position_2,
'end_position' => $background_color_gradient_end_position_2,
'overlays_image' => $background_color_gradient_overlays_image_2,
'active' => $use_background_color_gradient_3,
'type' => $background_color_gradient_type_3,
'direction' => $background_color_gradient_direction_3,
'radial_direction' => $background_color_gradient_direction_radial_3,
'color_start' => $background_color_gradient_start_3,
'color_end' => $background_color_gradient_end_3,
'start_position' => $background_color_gradient_start_position_3,
'end_position' => $background_color_gradient_end_position_3,
'overlays_image' => $background_color_gradient_overlays_image_3,
$et_pb_column_backgrounds_video = array(
'background_video_mp4' => $background_video_mp4_1,
'background_video_webm' => $background_video_webm_1,
'background_video_width' => $background_video_width_1,
'background_video_height' => $background_video_height_1,
'background_video_allow_pause' => $allow_player_pause_1,
'background_video_pause_outside_viewport' => $background_video_pause_outside_viewport_1,
'background_video_mp4' => $background_video_mp4_2,
'background_video_webm' => $background_video_webm_2,
'background_video_width' => $background_video_width_2,
'background_video_height' => $background_video_height_2,
'background_video_allow_pause' => $allow_player_pause_2,
'background_video_pause_outside_viewport' => $background_video_pause_outside_viewport_2,
'background_video_mp4' => $background_video_mp4_3,
'background_video_webm' => $background_video_webm_3,
'background_video_width' => $background_video_width_3,
'background_video_height' => $background_video_height_3,
'background_video_allow_pause' => $allow_player_pause_3,
'background_video_pause_outside_viewport' => $background_video_pause_outside_viewport_3,
$column_hover_paddings = array();
for ( $i = 0; $i <= 3; $i++ ) {
$column_hover_paddings = array_merge( $column_hover_paddings, array(
"column_{$i}_padding_hover_enabled" => $hover->is_enabled( "padding_{$i}", $this->props ),
"column_{$i}_padding_top" => $hover->get_compose_value( "padding_top_{$i}", "padding_{$i}", $this->props ),
"column_{$i}_padding_right" => $hover->get_compose_value( "padding_right_{$i}", "padding_{$i}", $this->props ),
"column_{$i}_padding_bottom" => $hover->get_compose_value( "padding_bottom_{$i}", "padding_{$i}", $this->props ),
"column_{$i}_padding_left" => $hover->get_compose_value( "padding_left_{$i}", "padding_{$i}", $this->props ),
$et_pb_column_paddings = array(
'padding-top' => $padding_top_1,
'padding-right' => $padding_right_1,
'padding-bottom' => $padding_bottom_1,
'padding-left' => $padding_left_1,
'padding-hover-enabled' => $column_hover_paddings['column_1_padding_hover_enabled'],
'padding-top-hover' => $column_hover_paddings['column_1_padding_top'],
'padding-right-hover' => $column_hover_paddings['column_1_padding_right'],
'padding-bottom-hover' => $column_hover_paddings['column_1_padding_bottom'],
'padding-left-hover' => $column_hover_paddings['column_1_padding_left'],
'padding-top' => $padding_top_2,
'padding-right' => $padding_right_2,
'padding-bottom' => $padding_bottom_2,
'padding-left' => $padding_left_2,
'padding-hover-enabled' => $column_hover_paddings['column_2_padding_hover_enabled'],
'padding-top-hover' => $column_hover_paddings['column_2_padding_top'],
'padding-right-hover' => $column_hover_paddings['column_2_padding_right'],
'padding-bottom-hover' => $column_hover_paddings['column_2_padding_bottom'],
'padding-left-hover' => $column_hover_paddings['column_2_padding_left'],
'padding-top' => $padding_top_3,
'padding-right' => $padding_right_3,
'padding-bottom' => $padding_bottom_3,
'padding-left' => $padding_left_3,
'padding-hover-enabled' => $column_hover_paddings['column_3_padding_hover_enabled'],
'padding-top-hover' => $column_hover_paddings['column_3_padding_top'],
'padding-right-hover' => $column_hover_paddings['column_3_padding_right'],
'padding-bottom-hover' => $column_hover_paddings['column_3_padding_bottom'],
'padding-left-hover' => $column_hover_paddings['column_3_padding_left'],
$et_pb_column_paddings_mobile = array(
'tablet' => explode( '|', $padding_1_tablet ),
'phone' => explode( '|', $padding_1_phone ),
'last_edited' => $padding_1_last_edited,
'tablet' => explode( '|', $padding_2_tablet ),
'phone' => explode( '|', $padding_2_phone ),
'last_edited' => $padding_2_last_edited,
'tablet' => explode( '|', $padding_3_tablet ),
'phone' => explode( '|', $padding_3_phone ),
'last_edited' => $padding_3_last_edited,
$et_pb_column_parallax = array(
array( $parallax_1, $parallax_method_1 ),
array( $parallax_2, $parallax_method_2 ),
array( $parallax_3, $parallax_method_3 ),
$et_pb_column_css = array(
'css_class' => array( $module_class_1, $module_class_2, $module_class_3 ),
'css_id' => array( $module_id_1, $module_id_2, $module_id_3 ),
'custom_css_before' => array( $custom_css_before_1, $custom_css_before_2, $custom_css_before_3 ),
'custom_css_main' => array( $custom_css_main_1, $custom_css_main_2, $custom_css_main_3 ),
'custom_css_after' => array( $custom_css_after_1, $custom_css_after_2, $custom_css_after_3 ),
'custom_css_before_hover' => array( $custom_css_before_1_hover, $custom_css_before_2_hover, $custom_css_before_3_hover ),
'custom_css_main_hover' => array( $custom_css_main_1_hover, $custom_css_main_2_hover, $custom_css_main_3_hover ),
'custom_css_after_hover' => array( $custom_css_after_1_hover, $custom_css_after_2_hover, $custom_css_after_3_hover ),
$internal_columns_settings_array = array(
'keep_column_padding_mobile' => 'on',
'et_pb_column_backgrounds' => $et_pb_column_backgrounds,
'et_pb_column_backgrounds_gradient' => $et_pb_column_backgrounds_gradient,
'et_pb_column_backgrounds_video' => $et_pb_column_backgrounds_video,
'et_pb_column_parallax' => $et_pb_column_parallax,
'et_pb_columns_counter' => 0,
'et_pb_column_paddings' => $et_pb_column_paddings,
'et_pb_column_paddings_mobile' => $et_pb_column_paddings_mobile,
'et_pb_column_css' => $et_pb_column_css,
$current_row_position = $et_pb_rendering_column_content ? 'internal_row' : 'regular_row';
$et_pb_all_column_settings[ $current_row_position ] = $internal_columns_settings_array;
$et_pb_rendering_specialty_section = true;
if ( $et_pb_rendering_column_content ) {
$et_pb_rendering_column_content_row = true;
$et_pb_rendering_specialty_section = false;
$background_video = $this->video_background();
$parallax_image = $this->get_parallax_image_background();
$background_color_values = array(
'desktop' => 'rgba(255,255,255,0)' !== $processed_background_color ? esc_html( $processed_background_color ) : '',
'tablet' => 'rgba(255,255,255,0)' !== $processed_background_color_tablet ? esc_html( $processed_background_color_tablet ) : '',
'phone' => 'rgba(255,255,255,0)' !== $processed_background_color_phone ? esc_html( $processed_background_color_phone ) : '',
et_pb_responsive_options()->generate_responsive_css( $background_color_values, '%%order_class%%.et_pb_section', 'background-color', $function_name, ' !important;', 'color' );