admin_form_before(); $output .= $this->admin_form_start(); $output .= $this->default_fields(); $widget_saved_values = $this->get_settings(); $output .= Repeater::get([ 'multi_lang' => true, 'settings' => $widget_saved_values, 'id' => 'promo_area_one', 'fields' => [ [ 'type' => RepeaterField::TEXT, 'name' => 'title', 'label' => __('Title') ], [ 'type' => RepeaterField::TEXT, 'name' => 'title_url', 'label' => __('Title URL') ], [ 'type' => RepeaterField::TEXT, 'name' => 'subtitle', 'label' => __('Subtitle') ], [ 'type' => RepeaterField::ICON_PICKER, 'name' => 'icon', 'label' => __('Icon'), ], ] ]); $output .= Slider::get([ 'name' => 'padding_top', 'label' => __('Padding Top'), 'value' => $widget_saved_values['padding_top'] ?? 100, 'max' => 500, ]); $output .= Slider::get([ 'name' => 'padding_bottom', 'label' => __('Padding Bottom'), 'value' => $widget_saved_values['padding_bottom'] ?? 100, 'max' => 500, ]); $output .= $this->admin_form_submit_button(); $output .= $this->admin_form_end(); $output .= $this->admin_form_after(); return $output; } public function frontend_render(): string { $all_settings = $this->get_settings(); $current_lang = LanguageHelper::user_lang_slug(); $padding_top = SanitizeInput::esc_html($all_settings['padding_top']); $padding_bottom = SanitizeInput::esc_html($all_settings['padding_bottom']); $repeater_data = $all_settings['promo_area_one'] ?? []; $item_markup = ''; foreach ($repeater_data['title_'.$current_lang] as $key => $item){ $title = $item ?? ''; $title_url = $repeater_data['title_url_'.$current_lang][$key] ?? ''; $subtitle = $repeater_data['subtitle_'.$current_lang][$key] ?? ''; $icon = $repeater_data['icon_'.$current_lang][$key] ?? ''; $item_markup.= <<

{$title}

{$subtitle}

ITEM; } return <<
{$item_markup}
HTML; } public function addon_title() { return __('Promo Area: 01'); } }