: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
$padding_left_style['media_query'] = ET_Builder_Element::get_media_query( $current_media_query );
ET_Builder_Element::set_style( $render_slug, $padding_left_style );
$button_url = trim( $button_url );
$button = $this->render_button( array(
'button_classname' => array( 'et_pb_pricing_table_button' ),
'button_custom' => '' !== $custom_table_icon || '' !== $custom_table_icon_tablet || '' !== $custom_table_icon_phone ? 'on' : 'off',
'button_rel' => $button_rel,
'button_text' => $button_text,
'button_text_escaped' => true,
'button_url' => $button_url,
'custom_icon' => $custom_table_icon,
'custom_icon_tablet' => $custom_table_icon_tablet,
'custom_icon_phone' => $custom_table_icon_phone,
'url_new_window' => $url_new_window,
'display_button' => ( '' !== $button_url && $multi_view->has_value( 'button_text' ) ),
'multi_view_data' => $multi_view->render_attrs( array(
'content' => '{{button_text}}',
'button_text' => '__not_empty',
'button_url' => '__not_empty',
$video_background = $this->video_background();
$parallax_image_background = $this->get_parallax_image_background();
// inherit header level from parent settings
$header_level = '' === $header_level && '' !== $et_pb_pricing_tables_header_level ? $et_pb_pricing_tables_header_level : $header_level;
$title = $multi_view->render_element( array(
'tag' => et_pb_process_header_level( $header_level, 'h2' ),
'content' => '{{title}}',
'class' => 'et_pb_pricing_title',
$subtitle = $multi_view->render_element( array(
'content' => '{{subtitle}}',
'class' => 'et_pb_best_value',
$currency = $multi_view->render_element( array(
'content' => '{{currency}}',
'class' => 'et_pb_dollar_sign',
$per = $multi_view->render_element( array(
'content' => '<span class="et_pb_frequency_slash">/</span>{{per}}',
'class' => 'et_pb_frequency',
$sum = $multi_view->render_element( array(
if ( 'off' !== $featured ) {
$this->add_classname( 'et_pb_featured_table' );
// Remove automatically added classnames
$this->remove_classname( array(
$content = $multi_view->render_element( array(
'content' => '{{content}}',
'class' => 'et_pb_pricing',
<div class="et_pb_pricing_heading">
</div> <!-- .et_pb_pricing_heading -->
<div class="et_pb_pricing_content_top">
<span class="et_pb_et_price">%6$s%7$s%8$s</span>
</div> <!-- .et_pb_pricing_content_top -->
<div class="et_pb_pricing_content">
</div> <!-- .et_pb_pricing_content -->
$this->module_classname( $render_slug ),
et_core_esc_previously( $title ),
et_core_esc_previously( $subtitle ),
et_core_esc_previously( $content ),
et_core_esc_previously( $button ),
et_core_esc_previously( $currency ),
et_core_esc_previously( $sum ),
et_core_esc_previously( $per ),
$parallax_image_background
* Filter multi view value.
* @see ET_Builder_Module_Helper_MultiViewOptions::filter_value
* @param mixed $raw_value Props raw value.
* @type string $context Context param: content, attrs, visibility, classes.
* @type string $name Module options props name.
* @type string $mode Current data mode: desktop, hover, tablet, phone.
* @type string $attr_key Attribute key for attrs context data. Example: src, class, etc.
* @type string $attr_sub_key Attribute sub key that availabe when passing attrs value as array such as styes. Example: padding-top, margin-botton, etc.
* @param ET_Builder_Module_Helper_MultiViewOptions $multi_view Multiview object instance.
public function multi_view_filter_value( $raw_value, $args, $multi_view ) {
$name = isset( $args['name'] ) ? $args['name'] : '';
$mode = isset( $args['mode'] ) ? $args['mode'] : '';
$context = isset( $args['context'] ) ? $args['context'] : '';
if ( $raw_value && 'content' === $name && 'content' === $context ) {
return do_shortcode( et_pb_fix_shortcodes( et_pb_extract_items( $raw_value ) ) );
$fields_need_escape = array(
if ( $raw_value && 'content' === $context && in_array( $name, $fields_need_escape, true ) ) {
return $this->_esc_attr( $multi_view->get_name_by_mode( $name, $mode ), 'none', $raw_value );
new ET_Builder_Module_Pricing_Tables_Item;