widget_cssclass = 'bloglex-slider-widget'; $this->widget_description = __("Displays recent posts in a carousel slider with an image", 'bloglex'); $this->widget_id = 'bloglex_carousel_slider_posts'; $this->widget_name = __('Bloglex: Carousel Posts', 'bloglex'); $this->settings = $this->get_widget_settings(); parent::__construct(); } /** * Define widget settings. */ protected function get_widget_settings() { return array( 'title' => array( 'type' => 'text', 'label' => __('Title', 'bloglex'), 'std' => __('Carousel Posts', 'bloglex'), ), 'display_layout' => array( 'type' => 'select', 'label' => __('Display Layout', 'bloglex'), 'options' => array( 'display-regular-layout' => __('Wrapper Layout', 'bloglex'), 'display-fullwidth-layout' => __('Full Width Layout', 'bloglex'), ), 'std' => 'display-regular-layout', 'desc' => __('Works exclusively in the fullwidth widget area', 'bloglex'), ), 'vertical_alignment' => array( 'type' => 'select', 'label' => __('Vertical Alignment', 'bloglex'), 'options' => array( 'vertical-align-top' => __('Top', 'bloglex'), 'vertical-align-middle' => __('Middle', 'bloglex'), 'vertical-align-bottom' => __('Bottom', 'bloglex'), ), 'std' => 'vertical-align-bottom', ), 'text_alignment' => array( 'type' => 'select', 'label' => __('Text Alignment', 'bloglex'), 'options' => array( 'align-text-center' => __('Center', 'bloglex'), 'align-text-left' => __('Left', 'bloglex'), 'align-text-right' => __('Right', 'bloglex'), ), 'std' => 'align-text-left', ), 'display_style' => array( 'type' => 'select', 'label' => __('Display Style', 'bloglex'), 'options' => array( 'wpi-post-regular' => __('Regular View', 'bloglex'), 'wpi-slides-card' => __('Card View', 'bloglex'), ), 'std' => 'wpi-post-regular', ), 'category' => array( 'type' => 'dropdown-taxonomies', 'label' => __('Select Category', 'bloglex'), 'args' => array( 'taxonomy' => 'category', 'class' => 'widefat', 'hierarchical' => true, 'show_count' => 1, 'show_option_all' => __('— Select —', 'bloglex'), ), ), 'number' => array( 'type' => 'number', 'step' => 1, 'min' => 1, 'std' => 7, 'label' => __('Total Number of posts to slider', 'bloglex'), ), 'number_of_slides' => array( 'type' => 'number', 'step' => 1, 'min' => 2, 'max' => 5, 'std' => 3, 'label' => __('Number of Slides to show', 'bloglex'), ), 'offset' => array( 'type' => 'number', 'step' => 1, 'min' => 0, 'max' => '', 'std' => '', 'label' => __('Offset', 'bloglex'), 'desc' => __('Offsets are used to skip a certain number of WordPress posts before starting output. Set it to 0 if you do not wish to use this feature.', 'bloglex'), ), 'font_size' => array( 'type' => 'select', 'label' => __('Entry title font size', 'bloglex'), 'options' => array( 'entry-title-small' => __('Small', 'bloglex'), 'entry-title-medium' => __('Medium', 'bloglex'), 'entry-title-big' => __('Big', 'bloglex'), 'entry-title-large' => __('Large', 'bloglex'), ), 'std' => 'entry-title-medium', ), 'font_style' => array( 'type' => 'select', 'label' => __('Entry title font style', 'bloglex'), 'options' => array( 'entry-title-normal' => __('Normal', 'bloglex'), 'entry-title-italic' => __('Italic', 'bloglex'), ), 'std' => 'entry-title-normal', ), 'image_size' => array( 'type' => 'select', 'label' => __('Image size', 'bloglex'), 'options' => array( 'medium' => __('Medium', 'bloglex'), 'medium_large' => __('Medium Large', 'bloglex'), 'large' => __('Large', 'bloglex'), 'full' => __('Full', 'bloglex'), ), 'std' => 'large', ), 'image_hover_effects' => array( 'type' => 'select', 'label' => __('Image hover effects', 'bloglex'), 'options' => array( 'hover-effect-shine' => __('Shine', 'bloglex'), 'hover-effect-slide' => __('Slide', 'bloglex'), 'hover-effect-zoom' => __('Zoom', 'bloglex'), ), 'std' => 'hover-effect-shine', ), 'show_overlay' => array( 'type' => 'checkbox', 'label' => __('Enable background overlay', 'bloglex'), 'std' => true, ), 'image_overlay_style' => array( 'type' => 'select', 'label' => __('Background overlay style', 'bloglex'), 'options' => array( 'regular' => __('Regular', 'bloglex'), 'gradient' => __('Gradient', 'bloglex'), ), 'std' => 'gradient', ), 'height' => array( 'type' => 'number', 'step' => 1, 'min' => 150, 'max' => '', 'std' => 440, 'label' => __('Height (px)', 'bloglex'), 'desc' => __('Change Height of Slides.', 'bloglex'), ), 'arrows' => array( 'type' => 'checkbox', 'label' => __('Enable Arrows', 'bloglex'), 'std' => true, ), 'dots' => array( 'type' => 'checkbox', 'label' => __('Enable Dots', 'bloglex'), 'std' => true, ), 'autoplay' => array( 'type' => 'checkbox', 'label' => __('Autoplay', 'bloglex'), 'std' => true, ), 'centered' => array( 'type' => 'checkbox', 'label' => __('Centered Mode', 'bloglex'), 'std' => false, ), 'spacebetween' => array( 'type' => 'number', 'step' => 1, 'min' => 0, 'max' => '40', 'std' => 20, 'label' => __('Space Between', 'bloglex'), 'desc' => __('Distance between slides in px.', 'bloglex'), ), 'orderby' => array( 'type' => 'select', 'std' => 'date', 'label' => __('Order by', 'bloglex'), 'options' => array( 'date' => __('Date', 'bloglex'), 'ID' => __('ID', 'bloglex'), 'title' => __('Title', 'bloglex'), 'rand' => __('Random', 'bloglex'), ), ), 'order' => array( 'type' => 'select', 'std' => 'desc', 'label' => __('Order', 'bloglex'), 'options' => array( 'asc' => __('ASC', 'bloglex'), 'desc' => __('DESC', 'bloglex'), ), ), 'show_date' => array( 'type' => 'checkbox', 'label' => __('Show Date', 'bloglex'), 'std' => true, ), 'date_format' => array( 'type' => 'select', 'label' => __('Date Format', 'bloglex'), 'options' => array( 'format_1' => __('Format 1', 'bloglex'), 'format_2' => __('Format 2', 'bloglex'), ), 'std' => 'format_1', ), 'show_author' => array( 'type' => 'checkbox', 'label' => __('Show Author', 'bloglex'), 'std' => true, ), 'display_author_option' => array( 'type' => 'select', 'label' => __('Author Option', 'bloglex'), 'options' => array( 'with_label' => __('With Label', 'bloglex'), 'with_icon' => __('With Icon', 'bloglex'), 'with_avatar_image' => __('With Avatar Image', 'bloglex'), ), 'std' => 'with_icon', ), 'author_text' => array( 'type' => 'text', 'label' => __('Author Text', 'bloglex'), 'std' => __('By:', 'bloglex'), 'desc' => __('This only works when the "With Label" option is selected under "Author Option"', 'bloglex'), ), 'show_category' => array( 'type' => 'checkbox', 'label' => __('Show Category', 'bloglex'), 'std' => true, ), 'category_text' => array( 'type' => 'text', 'label' => __('Category Text', 'bloglex'), ), 'display_category_option' => array( 'type' => 'select', 'label' => __('Category Option', 'bloglex'), 'options' => array( 'none' => __('None', 'bloglex'), 'has-background' => __('Has dot', 'bloglex'), 'has-text-color' => __('Has text color', 'bloglex'), ), 'std' => 'has-text-color', ), 'number_of_cat' => array( 'type' => 'number', 'step' => 1, 'min' => 1, 'std' => 1, 'label' => __('Number of Category to show', 'bloglex'), ), 'show_excerpt' => array( 'type' => 'checkbox', 'label' => __('Enable Excerpt', 'bloglex'), 'std' => false, ), ); } /** * Query the posts and return them. */ protected function get_posts($args, $instance) { $query_args = array( 'posts_per_page' => !empty($instance['number']) ? absint($instance['number']) : $this->settings['number']['std'], 'post_status' => 'publish', 'no_found_rows' => 1, 'orderby' => !empty($instance['orderby']) ? sanitize_text_field($instance['orderby']) : $this->settings['orderby']['std'], 'order' => !empty($instance['order']) ? sanitize_text_field($instance['order']) : $this->settings['order']['std'], 'offset' => !empty($instance['offset']) ? sanitize_text_field($instance['offset']) : $this->settings['offset']['std'], 'ignore_sticky_posts' => 1 ); if (isset($instance['offset']) && absint($instance['offset']) != 0) { $query_args['offset'] = absint($instance['offset']); } if (!empty($instance['category']) && -1 != $instance['category'] && 0 != $instance['category']) { $query_args['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $instance['category'], ); } return new WP_Query(apply_filters('bloglex_carousel_slider_posts_query_args', $query_args)); } /** * Output widget content. */ public function widget($args, $instance) { $posts = $this->get_posts($args, $instance); if (!$posts->have_posts()) { return; } echo $args['before_widget']; do_action('bloglex_before_carousel_slider_posts_with_image'); $class = isset($instance['display_layout']) ? $instance['display_layout'] : $this->settings['display_layout']['std']; $vertical_alignment = !empty($instance['vertical_alignment']) ? $instance['vertical_alignment'] : $this->settings['vertical_alignment']['std']; if ($vertical_alignment) { $class .= ' ' . $vertical_alignment; } $slider_nav = ''; $data_slider = array(); $number_of_slides = isset($instance['number_of_slides']) ? $instance['number_of_slides'] : $this->settings['number_of_slides']['std']; if ($number_of_slides == 2) { $data_slider['breakpoints'] = array( '576' => array( 'slidesPerView' => 2, ), ); } elseif ($number_of_slides == 3) { $data_slider['breakpoints'] = array( '576' => array( 'slidesPerView' => 2, ), '768' => array( 'slidesPerView' => 3, ), ); } elseif ($number_of_slides == 4) { $data_slider['breakpoints'] = array( '576' => array( 'slidesPerView' => 2, ), '768' => array( 'slidesPerView' => 3, ), '992' => array( 'slidesPerView' => 4, ), ); } elseif ($number_of_slides == 5) { $data_slider['breakpoints'] = array( '576' => array( 'slidesPerView' => 2, ), '768' => array( 'slidesPerView' => 3, ), '992' => array( 'slidesPerView' => 4, ), '1200' => array( 'slidesPerView' => 5, ), ); } $autoplay = isset($instance['autoplay']) ? $instance['autoplay'] : $this->settings['autoplay']['std']; if ($autoplay) : $data_slider['autoplay'] = array( 'delay' => 4000, ); endif; $centered = isset($instance['centered']) ? $instance['centered'] : $this->settings['centered']['std']; if ($centered) { $data_slider['centeredSlides'] = true; } $spacebetween = isset($instance['spacebetween']) ? $instance['spacebetween'] : $this->settings['spacebetween']['std']; if ($spacebetween) { $data_slider['spaceBetween'] = absint($spacebetween); } $dots = isset($instance['dots']) ? $instance['dots'] : $this->settings['dots']['std']; if ($dots) { $slider_nav .= '
'; } $arrows = isset($instance['arrows']) ? $instance['arrows'] : $this->settings['arrows']['std']; if ($arrows) { $slider_nav .= '
'; } if (!empty($instance['title'])) { echo $args['before_title'] . esc_html($instance['title']) . $args['after_title']; } ?> settings['display_style']['std']; $image_size = !empty($instance['image_size']) ? $instance['image_size'] : $this->settings['image_size']['std']; $image_hover_effects = !empty($instance['image_hover_effects']) ? $instance['image_hover_effects'] : $this->settings['image_hover_effects']['std']; $show_overlay = !empty($instance['show_overlay']) ? $instance['show_overlay'] : $this->settings['show_overlay']['std']; $image_overlay_style = !empty($instance['image_overlay_style']) ? $instance['image_overlay_style'] : $this->settings['image_overlay_style']['std']; $text_alignment = !empty($instance['text_alignment']) ? $instance['text_alignment'] : $this->settings['text_alignment']['std']; $font_size = !empty($instance['font_size']) ? $instance['font_size'] : $this->settings['font_size']['std']; $font_style = !empty($instance['font_style']) ? $instance['font_style'] : $this->settings['font_style']['std']; $height = isset($instance['height']) ? $instance['height'] : $this->settings['height']['std']; $show_author = !empty($instance['show_author']) ? $instance['show_author'] : $this->settings['show_author']['std']; $author_text = !empty($instance['author_text']) ? $instance['author_text'] : $this->settings['author_text']['std']; $display_author_option = !empty($instance['display_author_option']) ? $instance['display_author_option'] : $this->settings['display_author_option']['std']; $category_text = !empty($instance['category_text']) ? $instance['category_text'] : ''; $display_category_option = !empty($instance['display_category_option']) ? $instance['display_category_option'] : $this->settings['display_category_option']['std']; $number_of_cat = !empty($instance['number_of_cat']) ? absint($instance['number_of_cat']) : $this->settings['number_of_cat']['std']; $show_excerpt = !empty($instance['show_excerpt']) ? $instance['show_excerpt'] : $this->settings['show_excerpt']['std']; $style = 'height:' . esc_attr($height) . 'px;'; ?>
>
image-overlay-">
', ''); ?>