widget_cssclass = 'blogbyte_post_categories_grid_widget'; $this->widget_description = __( 'Displays post categories with image in grid', 'blogbyte' ); $this->widget_id = 'blogbyte_post_categories_grid_widget'; $this->widget_name = __( 'Blogbyte: Categories Grid', 'blogbyte' ); $post_categories = array(); $categories = get_categories( array( 'orderby' => 'name', 'order' => 'ASC', ) ); if ( ! empty( $categories ) ) { foreach ( $categories as $cat ) { $post_categories[ $cat->term_id ] = $cat->name; } } $this->settings = array( 'title' => array( 'type' => 'text', 'label' => __( 'Title', 'blogbyte' ), ), 'categories' => array( 'type' => 'multi-checkbox', 'label' => __( 'Select Categories', 'blogbyte' ), 'options' => $post_categories, ), 'no_of_column' => array( 'type' => 'number', 'step' => 1, 'min' => 1, 'max' => 5, 'std' => 2, 'label' => __( 'Number of Column', 'blogbyte' ), ), 'display_style' => array( 'type' => 'select', 'label' => __( 'Display Style', 'blogbyte' ), 'options' => array( 'style_1' => __( 'Default', 'blogbyte' ), 'style_2' => __( 'Category on Bottom', 'blogbyte' ), 'style_3' => __( 'Category on Center', 'blogbyte' ), 'style_4' => __( 'Small Height', 'blogbyte' ), ), 'std' => 'style_1', ), 'show_post_count' => array( 'type' => 'checkbox', 'label' => __( 'Show Post Count', 'blogbyte' ), 'std' => false, ), 'capitalize_cat_name' => array( 'type' => 'checkbox', 'label' => __( 'Capitalize Category Name', 'blogbyte' ), 'std' => true, ), 'overlay_color' => array( 'type' => 'color', 'label' => __( 'Overlay Color', 'blogbyte' ), 'std' => '#000000', ), 'use_cat_color_overlay' => array( 'type' => 'checkbox', 'label' => __( 'Use category color for the overlay', 'blogbyte' ), 'desc' => __( 'Will override the overlay color if the category has its own color', 'blogbyte' ), 'std' => false, ), 'overlay_opacity' => array( 'type' => 'number', 'step' => 10, 'min' => 0, 'max' => 100, 'std' => 50, 'label' => __( 'Overlay Opacity', 'blogbyte' ), ), ); parent::__construct(); add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_assets' ) ); } /** * Output widget. * * @see WP_Widget * * @param array $args * @param array $instance */ public function widget( $args, $instance ) { ob_start(); if ( ! empty( $instance['categories'] ) ) { $this->widget_start( $args, $instance ); do_action( 'blogbyte_before_post_cat_grid' ); $cat_label_class = ''; $column = $instance['no_of_column']; $display_style = $instance['display_style']; $show_post_count = isset( $instance['show_post_count'] ) ? $instance['show_post_count'] : $this->settings['show_post_count']['std']; $overlay_color = isset( $instance['overlay_color'] ) ? $instance['overlay_color'] : $this->settings['overlay_color']['std']; $use_cat_color_overlay = isset( $instance['use_cat_color_overlay'] ) ? $instance['use_cat_color_overlay'] : $this->settings['use_cat_color_overlay']['std']; $overlay_opacity = isset( $instance['overlay_opacity'] ) ? $instance['overlay_opacity'] : $this->settings['overlay_opacity']['std']; $overlay_opacity = $overlay_opacity / 100; $capitalize_cat_name = isset( $instance['capitalize_cat_name'] ) ? $instance['capitalize_cat_name'] : $this->settings['capitalize_cat_name']['std']; if ( 'style_4' == $display_style ) { $gap = ' g-2'; } else { $gap = ' g-4'; } $col_class = 'row row-cols-1 row-cols-sm-2'; if ( 2 == $column ) { $col_class .= ' blogbyte-grid-2'; } elseif ( 3 == $column ) { $col_class .= ' row-cols-md-2 row-cols-lg-3 blogbyte-grid-3'; } elseif ( 4 == $column ) { $col_class .= ' row-cols-md-2 row-cols-xl-4 blogbyte-grid-4'; } elseif ( 5 == $column ) { $col_class .= ' row-cols-md-3 row-cols-lg-4 row-cols-xl-5 blogbyte-grid-5'; } else { $col_class = ' row row-cols-1'; } $col_class .= $gap; $img_size = 'blogbyte-large-img'; $wrapper_class = $display_style; if ( $show_post_count ) { $wrapper_class .= ' blogbyte-cat-post-count-active'; } if ( $capitalize_cat_name ) { $cat_label_class .= ' blogbyte-uppercase-text'; } $style_attr = ' style="background-color:value;"'; ?>
count; $color = get_term_meta( $cat_info->term_id, 'category_color', true ); $build_style_attr = ''; if ( $color ) { $build_style_attr = str_replace( 'value', $color, $style_attr ); if ( $use_cat_color_overlay ) { $overlay_val = $color; } else { $overlay_val = $overlay_color; } } else { $overlay_val = $overlay_color; $build_style_attr = ''; } $style = 'background-color:' . $overlay_val . ';'; $style .= 'opacity:' . $overlay_opacity . ';'; ?>
widget_end( $args ); } echo ob_get_clean(); } public function enqueue_assets() { blogbyte_widget_css( $this->id_base, 'post-categories-grid' ); } }