widget_title_controls(); // Controls related to widget title style section. $this->widget_title_style_controls(); // Controls related to posts section. $this->posts_controls(); // Controls related to posts filter section. $this->posts_filter_controls(); } /** * Controls related to widget title section. */ public function widget_title_controls() { // Widget title section. $this->start_controls_section( 'section_bloglex_widget_title_manage', array( 'label' => esc_html__('Block Title', 'bloglex'), ) ); // Widget title. $this->add_control( 'widget_title', array( 'label' => esc_html__('Title:', 'bloglex'), 'type' => Controls_Manager::TEXT, 'placeholder' => esc_html__('Add your custom block title', 'bloglex'), 'label_block' => true, ) ); // Extra option control related to widget title section. $this->widget_title_controls_extra(); $this->end_controls_section(); } /** * Extra option control related to widget title section. */ public function widget_title_controls_extra() { } /** * Controls related to widget title style section. */ public function widget_title_style_controls() { // Widget design section. $this->start_controls_section( 'section_bloglex_widget_title_design_manage', array( 'label' => esc_html__('Widget Title', 'bloglex'), 'tab' => Controls_Manager::TAB_STYLE, ) ); $this->add_control( 'widget_title_color', array( 'label' => esc_html__('Color:', 'bloglex'), 'type' => Controls_Manager::COLOR, 'default' => '#289dcc', 'selectors' => array( '{{WRAPPER}} .bloglex-element-wrapper .module-title span' => 'background-color: {{VALUE}}', '{{WRAPPER}} .bloglex-element-wrapper .module-title' => 'border-bottom-color: {{VALUE}}', ), ) ); $this->add_control( 'widget_title_text_color', array( 'label' => esc_html__('Text Color:', 'bloglex'), 'type' => Controls_Manager::COLOR, 'default' => '#ffffff', 'selectors' => array( '{{WRAPPER}} .bloglex-element-wrapper .module-title span' => 'color: {{VALUE}}', ), ) ); $this->end_controls_section(); // Widget design section. $this->start_controls_section( 'section_bloglex_widget_font_design_manage', array( 'label' => esc_html__('Widget Font', 'bloglex'), 'tab' => Controls_Manager::TAB_STYLE, ) ); $this->widget_title_font_controls(); $this->add_responsive_control( 'meta_font_size', [ 'label' => esc_html__('Meta Font Size', 'bloglex') . ' (px)', 'type' => Controls_Manager::NUMBER, 'placeholder' => 20, 'selectors' => [ '{{WRAPPER}} > .entry-meta' => 'font-size: {{VALUE}}px', //Need the full path for exclude the inner section ], ] ); $this->add_responsive_control( 'content_font_size', [ 'label' => esc_html__('Content Font Size', 'bloglex') . ' (px)', 'type' => Controls_Manager::NUMBER, 'placeholder' => 20, 'selectors' => [ '{{WRAPPER}} > .entry-content' => 'font-size: {{VALUE}}px', //Need the full path for exclude the inner section ], ] ); // Extra option control related to widget title style section. $this->widget_title_style_controls_extra(); $this->end_controls_section(); } /** * Extra option control related to widget title style section. */ public function widget_title_font_controls() { } /** * Extra option control related to widget title style section. */ public function widget_title_style_controls_extra() { } /** * Controls related to posts section. */ public function posts_controls() { // Widget posts section. $this->start_controls_section( 'section_bloglex_posts_manage', array( 'label' => esc_html__('Posts', 'bloglex'), ) ); $this->add_control( 'posts_number', array( 'label' => esc_html__('Number of posts to display:', 'bloglex'), 'type' => Controls_Manager::TEXT, 'default' => $this->post_number, ) ); $this->add_control( 'offset_posts_number', array( 'label' => esc_html__('Offset Posts:', 'bloglex'), 'type' => Controls_Manager::TEXT, ) ); $this->posts_controls_excerpt(); $this->end_controls_section(); $this->start_controls_section( 'section_bloglex_posts_category', array( 'label' => esc_html__('Posts Category', 'bloglex'), ) ); $this->add_control( 'enable_category_meta', [ 'type' => \Elementor\Controls_Manager::SWITCHER, 'label' => esc_html__('Category Meta', 'bloglex'), 'default' => 'yes', ] ); $this->add_control( 'category_meta_text', array( 'label' => esc_html__('Category Title', 'bloglex'), 'type' => Controls_Manager::TEXT, 'default' => '', ) ); $this->add_control( 'display_category_option', [ 'type' => \Elementor\Controls_Manager::SELECT, 'label' => esc_html__('Category Option', 'bloglex'), 'options' => [ 'none' => esc_html__('None', 'bloglex'), 'has-background' => esc_html__('Has dot', 'bloglex'), 'has-text-color' => esc_html__('Has text color', 'bloglex'), ], 'default' => 'has-text-color', ] ); $this->add_control( 'number_of_cat', array( 'label' => esc_html__('Number of Category', 'bloglex'), 'type' => Controls_Manager::TEXT, 'default' => '1', ) ); $this->end_controls_section(); $this->start_controls_section( 'section_bloglex_posts_author', array( 'label' => esc_html__('Posts Author', 'bloglex'), ) ); $this->add_control( 'enable_author_meta', [ 'type' => \Elementor\Controls_Manager::SWITCHER, 'label' => esc_html__('Author Meta', 'bloglex'), 'default' => 'yes', ] ); $this->add_control( 'display_author_option', [ 'type' => \Elementor\Controls_Manager::SELECT, 'label' => esc_html__('Author Option', 'bloglex'), 'options' => [ 'with_label' => esc_html__('With Label', 'bloglex'), 'with_icon' => esc_html__('With Icon', 'bloglex'), 'with_avatar_image' => esc_html__('With Avatar Image', 'bloglex'), ], 'default' => 'with_icon', ] ); $this->add_control( 'author_text', array( 'label' => esc_html__('Author Text', 'bloglex'), 'type' => Controls_Manager::TEXT, 'default' => 'By', ) ); $this->end_controls_section(); $this->start_controls_section( 'section_bloglex_posts_date', array( 'label' => esc_html__('Posts Date', 'bloglex'), ) ); $this->add_control( 'enable_date_meta', [ 'type' => \Elementor\Controls_Manager::SWITCHER, 'label' => esc_html__('Date Meta', 'bloglex'), 'default' => 'yes', ] ); $this->add_control( 'date_format', [ 'type' => \Elementor\Controls_Manager::SELECT, 'label' => esc_html__('Date Format', 'bloglex'), 'options' => [ 'format_1' => esc_html__('Format 1', 'bloglex'), 'format_2' => esc_html__('Format 2', 'bloglex'), ], 'default' => 'format_1', ] ); // Extra option control related to posts section. $this->posts_controls_extra(); $this->end_controls_section(); } /** * Extra option control related to posts section. */ public function posts_controls_excerpt() { } /** * Extra option control related to posts section. */ public function posts_controls_extra() { } /** * Controls related to posts filter section. */ public function posts_filter_controls() { // Posts filter section. $this->start_controls_section( 'section_bloglex_posts_filter_manage', array( 'label' => esc_html__('Filter', 'bloglex'), ) ); $this->add_control( 'display_type', array( 'label' => esc_html__('Display the posts from:', 'bloglex'), 'type' => Controls_Manager::SELECT, 'default' => 'latest', 'options' => array( 'latest' => esc_html__('Latest Posts', 'bloglex'), 'categories' => esc_html__('Categories', 'bloglex'), ), ) ); $this->add_control( 'categories_selected', array( 'label' => esc_html__('Select categories:', 'bloglex'), 'type' => Controls_Manager::SELECT, 'options' => bloglex_elementor_categories(), 'condition' => array( 'display_type' => 'categories', ), ) ); // Extra option control related to posts filter section. $this->posts_filter_controls_extra(); $this->end_controls_section(); } /** * Extra option control related to posts filter section. */ public function posts_filter_controls_extra() { } /** * Query of the posts within the widgets. * * @param int $posts_number The number of posts to display. * @param string $display_type The display posts from the widget setting. * @param int $categories_selected The category id of the widget setting. * @param int $offset_posts_number The offset posts number of the widget setting. * * @return \WP_Query */ public function query_posts($posts_number, $display_type, $categories_selected, $offset_posts_number) { $query_args = array( 'posts_per_page' => $posts_number, 'post_type' => 'post', 'ignore_sticky_posts' => true, 'no_found_rows' => true, ); // Display from the category selected. if ('categories' == $display_type) { $query_args['category__in'] = $categories_selected; } // Offset the posts. if (!empty($offset_posts_number)) { $query_args['offset'] = $offset_posts_number; } // Start the WP_Query Object/Class. $get_featured_posts = new \WP_Query($query_args); return $get_featured_posts; } /** * Displays the widget title. * * @param string $widget_title The available widget title. */ public function widget_title($widget_title) { // Return if $widget_title is empty. if (!$widget_title) { return; } ?>