File "w-tax.php"

Full Path: /home/elegucvf/public_html/video/wp-content/plugins/atlas-core/elementor/widgets/w-tax.php
File size: 5.8 KB
MIME-type: text/x-php
Charset: utf-8

<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly


class TH90_W_Tax extends \Elementor\Widget_Base {
	public function get_name() {
		return 'w-tax';
	}

	public function get_title() {
		return __( 'Taxonomy', 'atlas-core' );
	}

	public function get_keywords() {
		return [ 'tags', 'category', 'categories' ];
	}

	public function get_icon() {
		return 'eicon-tags th90-widget-icon';
	}

	public function get_categories() {
		return [ sanitize_key( wp_get_theme()->name ) . '-elements' ];
	}

	public function controls_general() {
		$this->start_controls_section(
			'section_general',
			[
				'label' => __( 'General', 'atlas-core' ),
			]
		);
		/*$this->add_control(
			'show_count',
			[
				'label' => esc_html__('Show total posts count?', 'atlas-core'),
				'type' => \Elementor\Controls_Manager::SWITCHER,
				'label_on' => esc_html__('Yes', 'atlas-core'),
				'label_off' => esc_html__('No', 'atlas-core'),
				'default' => 'no',
			]
		);*/
		$this->add_control(
			'layout',
			[
				'label' => esc_html__( 'Style', 'elementor' ),
				'type' => \Elementor\Controls_Manager::CHOOSE,
				'toggle' => false,
				'default' => 'hero',
				'options' => [
					'hero' => [
						'title' => esc_html__( 'Block Hero', 'elementor' ),
						'icon' => 'eicon-editor-list-ul',
					],
					'grid' => [
						'title' => esc_html__( 'Grid', 'elementor' ),
						'icon' => 'eicon-gallery-grid',
					],
				],
			]
		);
		$this->add_responsive_control(
			'columns',
			[
				'label' => __( 'Columns', 'atlas-core' ),
				'type'  => \Elementor\Controls_Manager::SLIDER,
				'range' => [
					'px' => [
						'min' => 1,
						'max' => 15,
					],
				],
				'selectors' => [
                    '{{WRAPPER}} .tax-grid, {{WRAPPER}} .tax-hero' => 'grid-template-columns: repeat({{SIZE}}, 1fr);',
				],
			]
		);
		$this->add_responsive_control(
			'item_space',
			[
				'label' => esc_html__( 'Taxonomy item space', 'atlas-core' ),
				'type'  => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'selectors' => [
					'{{WRAPPER}} .tax-grid, {{WRAPPER}} .tax-hero' => 'grid-gap: {{SIZE}}{{UNIT}};',
				],
			]
		);
		/*$this->add_responsive_control(
			'tax_radius',
			[
				'label' => esc_html__( 'Cloud radius', 'atlas-core' ),
				'type'  => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 200,
					],
				],
				'selectors' => [
					'{{WRAPPER}} a.term-cloud' => 'border-radius: {{SIZE}}{{UNIT}};',
				],
			]
		);
		$this->add_group_control(
			\Elementor\Group_Control_Typography::get_type(),
			[
				'name' => '_tax_title_typo',
				'label' => esc_html__( 'Taxonomy title typography', 'atlas-core' ),
				'selector' => '{{WRAPPER}} .cloud-title',
			]
		);

		$this->add_group_control(
			\Elementor\Group_Control_Typography::get_type(),
			[
				'name' => '_tax_count_typo',
				'label' => esc_html__( 'Taxonomy count typography', 'atlas-core' ),
				'selector' => '{{WRAPPER}} .cloud-count',
			]
		);*/

		$this->end_controls_section();

	}

	public function controls_query() {

		$controls = new TH90_Controls();
		$controls->tax_query_default( $this );

	}

	protected function register_controls() {

		$this->controls_general();

		$this->controls_query();

		/* Widget Boxed */
		$controls = new TH90_Controls();
		$controls->box_settings( $this );
	}

	/**
	 * Render the widget output on the frontend.
	 *
	 * Written in PHP and used to generate the final HTML.
	 */
	protected function render() {
		global $block_id;
		$block_id++;
		$atts = $this->get_settings_for_display();
		$atts['categories'] = ! empty( $atts['categories'] ) ? implode( ',', $atts['categories'] ) : '';
		$atts['tags'] = ! empty( $atts['tags'] ) ? implode( ',', $atts['tags'] ) : '';
		$count = 0;

		$wrapper_classes = array_merge(
			array(
				'th90-block',
				'block-tax',
			),
			th90_box_class( $atts )
		);
		?>
		<div id="th90-block_<?php echo absint( $block_id ); ?>" class="<?php echo esc_attr( implode( ' ', array_filter( $wrapper_classes ) ) ); ?>">

			<?php
			th90_box_heading( $atts );

			/* Term Query */
			if ( 'category' == $atts['taxonomy'] ) {
				if( 'yes' == $atts['selected_cats'] ) {
					$terms = get_terms( array(
						'taxonomy' => 'category',
						'include' => $atts['categories'],
						'hide_empty' => $atts['hide_empty'] ? true : false,
					) );
				} else {
					$terms = get_terms( array(
						'taxonomy' => 'category',
						'orderby' => $atts['orderby'],
						'order' => $atts['order'],
						'number' => absint( $atts['number'] ),
						'hide_empty' => 'yes' == $atts['hide_empty'] ? true : false,
					) );
				}
			} else {
				if( 'yes' == $atts['selected_tags'] ) {
					$terms = get_terms( array(
						'taxonomy' => 'post_tag',
						'include' => $atts['tags'],
						'hide_empty' => $atts['hide_empty'] ? true : false,
					) );
				} else {
					$terms = get_terms( array(
						'taxonomy' => 'post_tag',
						'orderby' => $atts['orderby'],
						'order' => $atts['order'],
						'number' => absint( $atts['number'] ),
						'hide_empty' => 'yes' == $atts['hide_empty'] ? true : false,
					) );
				}
			}

			if ( ! empty( $terms ) ) {
				?>
				<div class="tax-<?php echo $atts['layout']; ?>">
					<?php
					foreach ( $terms as $term ) {
						$atts['term_id'] = $term->term_id;
						$atts['term_count'] = $term->count;
						$atts['term_name'] = $term->name;
						$count++;

						get_template_part( 'template-parts/term/term', $atts['layout'], array(
							'block' => $atts,
							'count' => $count,
						) );
					}
					?>
				</div>
			<?php
			}
			?>
		</div>
		<?php
	}

	/**
	 * Render the widget output in the editor.
	 *
	 * Written as a Backbone JavaScript template and used to generate the live preview.
	 */
	protected function content_template() {

	}
}