Your IP : 216.73.216.196
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class Crowdngo_Elementor_Posts extends Elementor\Widget_Base {
public function get_name() {
return 'apus_element_posts';
}
public function get_title() {
return esc_html__( 'Apus Posts', 'crowdngo' );
}
public function get_categories() {
return [ 'crowdngo-elements' ];
}
protected function _register_controls() {
$this->start_controls_section(
'content_section',
[
'label' => esc_html__( 'Posts', 'crowdngo' ),
'tab' => Elementor\Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'title',
[
'label' => esc_html__( 'Title', 'crowdngo' ),
'type' => Elementor\Controls_Manager::TEXT,
'input_type' => 'text',
'placeholder' => esc_html__( 'Enter your title here', 'crowdngo' ),
]
);
$this->add_control(
'number',
[
'label' => esc_html__( 'Number', 'crowdngo' ),
'type' => Elementor\Controls_Manager::NUMBER,
'input_type' => 'number',
'description' => esc_html__( 'Number posts to display', 'crowdngo' ),
'default' => 4
]
);
$this->add_control(
'order_by',
[
'label' => esc_html__( 'Order by', 'crowdngo' ),
'type' => Elementor\Controls_Manager::SELECT,
'options' => array(
'' => esc_html__('Default', 'crowdngo'),
'date' => esc_html__('Date', 'crowdngo'),
'ID' => esc_html__('ID', 'crowdngo'),
'author' => esc_html__('Author', 'crowdngo'),
'title' => esc_html__('Title', 'crowdngo'),
'modified' => esc_html__('Modified', 'crowdngo'),
'rand' => esc_html__('Random', 'crowdngo'),
'comment_count' => esc_html__('Comment count', 'crowdngo'),
'menu_order' => esc_html__('Menu order', 'crowdngo'),
),
'default' => ''
]
);
$this->add_control(
'order',
[
'label' => esc_html__( 'Sort order', 'crowdngo' ),
'type' => Elementor\Controls_Manager::SELECT,
'options' => array(
'' => esc_html__('Default', 'crowdngo'),
'ASC' => esc_html__('Ascending', 'crowdngo'),
'DESC' => esc_html__('Descending', 'crowdngo'),
),
'default' => ''
]
);
$this->add_control(
'columns',
[
'label' => esc_html__( 'Columns', 'crowdngo' ),
'type' => Elementor\Controls_Manager::NUMBER,
'input_type' => 'number',
'default' => 4
]
);
$this->add_control(
'layout_type',
[
'label' => esc_html__( 'Layout', 'crowdngo' ),
'type' => Elementor\Controls_Manager::SELECT,
'options' => array(
'grid' => esc_html__('Grid', 'crowdngo'),
'carousel' => esc_html__('Carousel', 'crowdngo'),
'list' => esc_html__('List', 'crowdngo')
),
'default' => 'grid'
]
);
$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(
'el_class',
[
'label' => esc_html__( 'Extra class name', 'crowdngo' ),
'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.', 'crowdngo' ),
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_title_style',
[
'label' => esc_html__( 'Tyles', 'crowdngo' ),
'tab' => Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_control(
'title_color',
[
'label' => esc_html__( 'Title Color', 'crowdngo' ),
'type' => Elementor\Controls_Manager::COLOR,
'selectors' => [
// Stronger selector to avoid section style from overwriting
'{{WRAPPER}} .widget-title' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Elementor\Group_Control_Typography::get_type(),
[
'label' => esc_html__( 'Title Typography', 'crowdngo' ),
'name' => 'title_typography',
'selector' => '{{WRAPPER}} .widget-title',
]
);
$this->add_control(
'post_title_color',
[
'label' => esc_html__( 'Post Title Color', 'crowdngo' ),
'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', 'crowdngo' ),
'name' => 'post_title_typography',
'selector' => '{{WRAPPER}} .post .title a',
]
);
$this->add_control(
'post_excerpt_color',
[
'label' => esc_html__( 'Post Excerpt Color', 'crowdngo' ),
'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', 'crowdngo' ),
'name' => 'post_excerpt_typography',
'selector' => '{{WRAPPER}} .post .description',
]
);
$this->add_control(
'post_tag_color',
[
'label' => esc_html__( 'Post Tag Color', 'crowdngo' ),
'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', 'crowdngo' ),
'name' => 'post_tag_typography',
'selector' => '{{WRAPPER}} .post .tags',
]
);
$this->add_control(
'post_readmore_color',
[
'label' => esc_html__( 'Post Read More Color', 'crowdngo' ),
'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', 'crowdngo' ),
'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,
);
$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 );
?>
<div class="widget-blogs widget <?php echo esc_attr($layout_type); ?> <?php echo esc_attr($el_class); ?>">
<?php if ( $title ) { ?>
<h2 class="widget-title"><?php echo wp_kses_post($title); ?></h2>
<?php } ?>
<div class="widget-content">
<?php if ( $layout_type == 'carousel' ): ?>
<div class="slick-carousel" data-carousel="slick" data-items="<?php echo esc_attr($columns); ?>" data-smallmedium="2" data-extrasmall="1" data-pagination="true" data-nav="true">
<?php while ( $loop->have_posts() ): $loop->the_post(); ?>
<div class="item">
<?php get_template_part( 'template-posts/loop/inner-grid'); ?>
</div>
<?php endwhile; ?>
</div>
<?php elseif ( $layout_type == ' grid' ): ?>
<?php $bcol = 12/$columns; ?>
<div class="layout-blog style-grid">
<div class="row">
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="col-md-<?php echo esc_attr($bcol); ?> col-sm-6 col-xs-12">
<?php get_template_part( 'template-posts/loop/inner-grid' ); ?>
</div>
<?php endwhile; ?>
</div>
</div>
<?php else: ?>
<div class="layout-blog style-grid">
<div class="row">
<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
<div class="col-xs-12">
<article <?php post_class('post-list-item-small'); ?>>
<h3 class="entry-title"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
</article>
</div>
<?php endwhile; ?>
</div>
</div>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
</div>
</div>
<?php
}
}
}
Elementor\Plugin::instance()->widgets_manager->register_widget_type( new Crowdngo_Elementor_Posts );