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' => 'header_ten', //this should be unique 'fields' => [ [ 'type' => RepeaterField::TEXT, 'name' => 'subtitle', 'label' => __('Subtitle') ], [ 'type' => RepeaterField::TEXT, 'name' => 'title', 'label' => __('Title') ], [ 'type' => RepeaterField::TEXTAREA, 'name' => 'description', 'label' => __('Description') ], [ 'type' => RepeaterField::TEXT, 'name' => 'button_text', 'label' => __('Button Text') ], [ 'type' => RepeaterField::TEXT, 'name' => 'button_url', 'label' => __('Button Url') ], [ 'type' => RepeaterField::ICON_PICKER, 'name' => 'button_icon', 'label' => __('Button Icon') ], [ 'type' => RepeaterField::IMAGE, 'name' => 'background_image', 'label' => __('Background Image') ], ] ]); $output .= Slider::get([ 'name' => 'padding_top', 'label' => __('Padding Top'), 'value' => $widget_saved_values['padding_top'] ?? 225, 'max' => 500, ]); $output .= Slider::get([ 'name' => 'padding_bottom', 'label' => __('Padding Bottom'), 'value' => $widget_saved_values['padding_bottom'] ?? 220, 'max' => 500, ]); $output .= $this->admin_form_submit_button(); $output .= $this->admin_form_end(); $output .= $this->admin_form_after(); return $output; } /** * frontend_render * this method must have to implement by all widget to render frontend widget content * @since 1.0.0 * */ public function frontend_render(): string { $output = ''; return $output; } /** * widget_title * this method must have to implement by all widget to register widget title * @since 1.0.0 * */ public function addon_title() { return __('Header Slider: 01'); } private function render_slider_markup(int $index = null): string { $settings = $this->get_settings(); $subtitle = $this->get_repeater_field_value('subtitle', $index, LanguageHelper::user_lang_slug()); $title = $this->get_repeater_field_value('title', $index, LanguageHelper::user_lang_slug()); $description = $this->get_repeater_field_value('description', $index, LanguageHelper::user_lang_slug()); $button_text = $this->get_repeater_field_value('button_text', $index, LanguageHelper::user_lang_slug()); $button_url = $this->get_repeater_field_value('button_url', $index, LanguageHelper::user_lang_slug()); $button_icon = $this->get_repeater_field_value('button_icon', $index, LanguageHelper::user_lang_slug()); $background_image = render_background_image_markup_by_attachment_id($this->get_repeater_field_value('background_image', $index, LanguageHelper::user_lang_slug())); $button_markup = ''; if (!empty($button_text) && !empty($button_url)){ $icon_markup = !empty($button_icon) ? '' : ''; $button_markup = '
'.$button_text.' '.$icon_markup.'
'; } $padding_top = SanitizeInput::esc_html($settings['padding_top']); $padding_bottom = SanitizeInput::esc_html($settings['padding_bottom']); return <<
{$subtitle}

{$title}

{$description}

{$button_markup}
HTML; } }