Viewing File: /home/maglabs/sogefab/wp-content/themes/sofass/inc/vendors/elementor/widgets/posts.php
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class Sofass_Elementor_Posts extends Elementor\Widget_Base {
public function get_name() {
return 'sofass_posts';
}
public function get_title() {
return esc_html__( 'Goal Posts', 'sofass' );
}
public function get_categories() {
return [ 'sofass-elements' ];
}
protected function register_controls() {
$this->start_controls_section(
'content_section',
[
'label' => esc_html__( 'Posts', 'sofass' ),
'tab' => Elementor\Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'title',
[
'label' => esc_html__( 'Title', 'sofass' ),
'type' => Elementor\Controls_Manager::TEXT,
'input_type' => 'text',
'placeholder' => esc_html__( 'Enter your title here', 'sofass' ),
]
);
$this->add_control(
'sub_title', [
'label' => esc_html__( 'Widget Sub Title', 'sofass' ),
'type' => Elementor\Controls_Manager::TEXT
]
);
$this->add_control(
'sub_text', [
'label' => esc_html__( 'Sub Text', 'sofass' ),
'type' => Elementor\Controls_Manager::TEXTAREA
]
);
$this->add_control(
'title_type',
[
'label' => esc_html__( 'Position Title', 'sofass' ),
'type' => Elementor\Controls_Manager::SELECT,
'options' => array(
'left' => esc_html__('Left', 'sofass'),
'center' => esc_html__('Center', 'sofass'),
),
'default' => 'center'
]
);
$this->add_control(
'number',
[
'label' => esc_html__( 'Number', 'sofass' ),
'type' => Elementor\Controls_Manager::NUMBER,
'input_type' => 'number',
'description' => esc_html__( 'Number posts to display', 'sofass' ),
'default' => 4
]
);
$this->add_control(
'order_by',
[
'label' => esc_html__( 'Order by', 'sofass' ),
'type' => Elementor\Controls_Manager::SELECT,
'options' => array(
'' => esc_html__('Default', 'sofass'),
'date' => esc_html__('Date', 'sofass'),
'ID' => esc_html__('ID', 'sofass'),
'author' => esc_html__('Author', 'sofass'),
'title' => esc_html__('Title', 'sofass'),
'modified' => esc_html__('Modified', 'sofass'),
'rand' => esc_html__('Random', 'sofass'),
'comment_count' => esc_html__('Comment count', 'sofass'),
'menu_order' => esc_html__('Menu order', 'sofass'),
),
'default' => ''
]
);
$this->add_control(
'order',
[
'label' => esc_html__( 'Sort order', 'sofass' ),
'type' => Elementor\Controls_Manager::SELECT,
'options' => array(
'' => esc_html__('Default', 'sofass'),
'ASC' => esc_html__('Ascending', 'sofass'),
'DESC' => esc_html__('Descending', 'sofass'),
),
'default' => ''
]
);
$this->add_control(
'slugs',
[
'label' => esc_html__( 'Categories Slug', 'sofass' ),
'type' => Elementor\Controls_Manager::TEXTAREA,
'rows' => 2,
'default' => '',
'placeholder' => esc_html__( 'Enter slug spearate by comma(,)', 'sofass' ),
]
);
$columns = range( 1, 12 );
$columns = array_combine( $columns, $columns );
$this->add_responsive_control(
'columns',
[
'label' => esc_html__( 'Columns', 'sofass' ),
'type' => Elementor\Controls_Manager::SELECT,
'options' => $columns,
'frontend_available' => true,
'default' => 3,
'condition' => [
'layout_type' => ['grid', 'carousel'],
],
]
);
$this->add_control(
'layout_type',
[
'label' => esc_html__( 'Layout', 'sofass' ),
'type' => Elementor\Controls_Manager::SELECT,
'options' => array(
'grid' => esc_html__('Grid', 'sofass'),
'carousel' => esc_html__('Carousel', 'sofass')
),
'default' => 'grid'
]
);
$this->add_control(
'item_type',
[
'label' => esc_html__( 'Item Style', 'sofass' ),
'type' => Elementor\Controls_Manager::SELECT,
'options' => array(
'grid' => esc_html__('Grid v1', 'sofass'),
'grid-v2' => esc_html__('Grid v2', 'sofass'),
'grid-v3' => esc_html__('Grid v3', 'sofass'),
),
'default' => 'grid'
]
);
$this->add_responsive_control(
'slides_to_scroll',
[
'label' => esc_html__( 'Slides to Scroll', 'sofass' ),
'type' => Elementor\Controls_Manager::SELECT,
'description' => esc_html__( 'Set how many slides are scrolled per swipe.', 'sofass' ),
'options' => $columns,
'condition' => [
'columns!' => '1',
'layout_type' => 'carousel',
],
'frontend_available' => true,
'default' => 3,
]
);
$this->add_group_control(
Elementor\Group_Control_Image_Size::get_type(),
[
'name' => 'image', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `image_size` and `image_custom_dimension`.
'default' => 'large',
'separator' => 'none',
]
);
$this->add_control(
'show_nav',
[
'label' => esc_html__( 'Show Nav', 'sofass' ),
'type' => Elementor\Controls_Manager::SWITCHER,
'default' => '',
'label_on' => esc_html__( 'Hide', 'sofass' ),
'label_off' => esc_html__( 'Show', 'sofass' ),
'condition' => [
'layout_type' => 'carousel',
],
]
);
$this->add_control(
'show_pagination',
[
'label' => esc_html__( 'Show Pagination', 'sofass' ),
'type' => Elementor\Controls_Manager::SWITCHER,
'default' => '',
'label_on' => esc_html__( 'Hide', 'sofass' ),
'label_off' => esc_html__( 'Show', 'sofass' ),
'condition' => [
'layout_type' => 'carousel',
],
]
);
$this->add_control(
'autoplay',
[
'label' => esc_html__( 'Autoplay', 'sofass' ),
'type' => Elementor\Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'sofass' ),
'label_off' => esc_html__( 'No', 'sofass' ),
'return_value' => true,
'default' => true,
'condition' => [
'layout_type' => 'carousel',
],
]
);
$this->add_control(
'infinite_loop',
[
'label' => esc_html__( 'Infinite Loop', 'sofass' ),
'type' => Elementor\Controls_Manager::SWITCHER,
'label_on' => esc_html__( 'Yes', 'sofass' ),
'label_off' => esc_html__( 'No', 'sofass' ),
'return_value' => true,
'default' => true,
'condition' => [
'layout_type' => 'carousel',
],
]
);
$this->add_control(
'el_class',
[
'label' => esc_html__( 'Extra class name', 'sofass' ),
'type' => Elementor\Controls_Manager::TEXT,
'placeholder' => esc_html__( 'If you wish to style particular content element differently, please add a class name to this field and refer to it in your custom CSS file.', 'sofass' ),
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_title_style',
[
'label' => esc_html__( 'Tyles', 'sofass' ),
'tab' => Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_control(
'title_color',
[
'label' => esc_html__( 'Title Color', 'sofass' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => [
// Stronger selector to avoid section style from overwriting
'{{WRAPPER}} .widget-blogs-title' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'sub_title_color',
[
'label' => esc_html__( 'Sub Title Color', 'sofass' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => [
// Stronger selector to avoid section style from overwriting
'{{WRAPPER}} .sub-widget-title' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'sub_text_color',
[
'label' => esc_html__( 'Sub Text Color', 'sofass' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => [
// Stronger selector to avoid section style from overwriting
'{{WRAPPER}} .sub-text' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Elementor\Group_Control_Typography::get_type(),
[
'label' => esc_html__( 'Title Typography', 'sofass' ),
'name' => 'title_typography',
'selector' => '{{WRAPPER}} .widget-title',
]
);
$this->add_control(
'post_title_color',
[
'label' => esc_html__( 'Post Title Color', 'sofass' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => [
// Stronger selector to avoid section style from overwriting
'{{WRAPPER}} .post .title a' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Elementor\Group_Control_Typography::get_type(),
[
'label' => esc_html__( 'Post Title Typography', 'sofass' ),
'name' => 'post_title_typography',
'selector' => '{{WRAPPER}} .post .title a',
]
);
$this->add_control(
'post_excerpt_color',
[
'label' => esc_html__( 'Post Excerpt Color', 'sofass' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => [
// Stronger selector to avoid section style from overwriting
'{{WRAPPER}} .post .description' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Elementor\Group_Control_Typography::get_type(),
[
'label' => esc_html__( 'Post Excerpt Typography', 'sofass' ),
'name' => 'post_excerpt_typography',
'selector' => '{{WRAPPER}} .post .description',
]
);
$this->add_control(
'post_tag_color',
[
'label' => esc_html__( 'Post Tag Color', 'sofass' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => [
// Stronger selector to avoid section style from overwriting
'{{WRAPPER}} .post .tags' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Elementor\Group_Control_Typography::get_type(),
[
'label' => esc_html__( 'Post Tag Typography', 'sofass' ),
'name' => 'post_tag_typography',
'selector' => '{{WRAPPER}} .post .tags',
]
);
$this->add_control(
'post_readmore_color',
[
'label' => esc_html__( 'Post Read More Color', 'sofass' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => [
// Stronger selector to avoid section style from overwriting
'{{WRAPPER}} .post .readmore' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Elementor\Group_Control_Typography::get_type(),
[
'label' => esc_html__( 'Post Read More Typography', 'sofass' ),
'name' => 'post_readmore_typography',
'selector' => '{{WRAPPER}} .post .readmore',
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings();
extract( $settings );
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => $number,
'orderby' => $order_by,
'order' => $order,
);
$slugs = !empty($slugs) ? array_map('trim', explode(',', $slugs)) : array();
if ( !empty($slugs) && is_array($slugs) ) {
$args['tax_query'][] = array(
'taxonomy' => 'category',
'field' => 'slug',
'terms' => $slugs,
'operator' => 'IN'
);
}
$loop = new WP_Query($args);
if ( $loop->have_posts() ) {
if ( $image_size == 'custom' ) {
if ( $image_custom_dimension['width'] && $image_custom_dimension['height'] ) {
$thumbsize = $image_custom_dimension['width'].'x'.$image_custom_dimension['height'];
} else {
$thumbsize = 'full';
}
} else {
$thumbsize = $image_size;
}
set_query_var( 'thumbsize', $thumbsize );
$columns = !empty($columns) ? $columns : 3;
$columns_tablet = !empty($columns_tablet) ? $columns_tablet : 3;
$columns_mobile = !empty($columns_mobile) ? $columns_mobile : 2;
$slides_to_scroll = !empty($slides_to_scroll) ? $slides_to_scroll : $columns;
$slides_to_scroll_tablet = !empty($slides_to_scroll_tablet) ? $slides_to_scroll_tablet : $slides_to_scroll;
$slides_to_scroll_mobile = !empty($slides_to_scroll_mobile) ? $slides_to_scroll_mobile : 1;
?>
<div class="widget-blogs widget <?php echo esc_attr($layout_type); ?> <?php echo esc_attr($el_class); ?>">
<div class="top-info <?php echo esc_attr(($title_type != 'center')?'flex-middle-sm':'text-center'); ?>">
<?php if ( !empty($title) ): ?>
<div class="widget-title">
<?php if ( !empty($sub_title) ): ?>
<span class="sub-widget-title">
<?php echo esc_attr( $sub_title ); ?>
</span>
<?php endif; ?>
<?php if ( !empty($title) ): ?>
<h3 class="products-tabs-title">
<?php echo esc_attr( $title ); ?>
</h3>
<?php endif; ?>
<?php if ( !empty($sub_text) ): ?>
<p class="sub-text">
<?php echo esc_attr( $sub_text ); ?>
</p>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
<div class="widget-content">
<?php if ( $layout_type == 'carousel' ): ?>
<div class="slick-carousel <?php echo esc_attr($columns < $loop->post_count?'':'hidden-dots'); ?>"
data-items="<?php echo esc_attr($columns); ?>"
data-smallmedium="<?php echo esc_attr( $columns_tablet ); ?>"
data-extrasmall="<?php echo esc_attr($columns_mobile); ?>"
data-slidestoscroll="<?php echo esc_attr($slides_to_scroll); ?>"
data-slidestoscroll_smallmedium="<?php echo esc_attr( $slides_to_scroll_tablet ); ?>"
data-slidestoscroll_extrasmall="<?php echo esc_attr($slides_to_scroll_mobile); ?>"
data-pagination="<?php echo esc_attr($show_pagination ? 'true' : 'false'); ?>" data-nav="<?php echo esc_attr($show_nav ? 'true' : 'false'); ?>" data-infinite="<?php echo esc_attr( $infinite_loop ? 'true' : 'false' ); ?>" data-autoplay="<?php echo esc_attr( $autoplay ? 'true' : 'false' ); ?>">
<?php while ( $loop->have_posts() ): $loop->the_post(); ?>
<div class="item">
<?php get_template_part( 'template-posts/loop/inner',$item_type); ?>
</div>
<?php endwhile; ?>
</div>
<?php else: ?>
<?php $bcol = 12/$columns; ?>
<div class="layout-blog style-grid">
<div class="row">
<?php
$mdcol = 12/$columns;
$smcol = 12/$columns_tablet;
$xscol = 12/$columns_mobile;
while ( $loop->have_posts() ) : $loop->the_post();
?>
<div class="col-md-<?php echo esc_attr($mdcol); ?> col-sm-<?php echo esc_attr($smcol); ?> col-xs-<?php echo esc_attr($xscol); ?>">
<?php get_template_part( 'template-posts/loop/inner',$item_type); ?>
</div>
<?php endwhile; ?>
</div>
</div>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
</div>
</div>
<?php
}
}
}
if ( version_compare(ELEMENTOR_VERSION, '3.5.0', '<') ) {
Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Sofass_Elementor_Posts );
} else {
Elementor\Plugin::instance()->widgets_manager->register( new Sofass_Elementor_Posts );
}
Back to Directory
File Manager