HEX
Server: LiteSpeed
System: Linux server65.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User: msatrvvp (1709)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: /home/msatrvvp/public_html/wp-content/plugins/fudee-elementor/widgets/shop-widget.php
<?php
namespace BdevsElementor\Widget;

use Elementor\Controls_Manager;
use Elementor\Group_Control_Typography;
use Elementor\Scheme_Typography;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;

/**
 * Bdevs Elementor Widget.
 *
 * Elementor widget that inserts an embbedable content into the page, from any given URL.
 *
 * @since 1.0.0
 */
class BdevsShop extends \Elementor\Widget_Base {

	/**
	 * Get widget name.
	 *
	 * Retrieve Bdevs Elementor widget name.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return string Widget name.
	 */
	public function get_name() {
		return 'bdevs-shop';
	}

	/**
	 * Get widget title.
	 *
	 * Retrieve Bdevs Elementor widget title.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return string Widget title.
	 */
	public function get_title() {
		return __( 'Shop Widget', 'bdevs-elementor' );
	}

	/**
	 * Get widget icon.
	 *
	 * Retrieve Bdevs Slider widget icon.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return string Widget icon.
	 */
	public function get_icon() {
		return 'eicon-favorite';
	}

	/**
	 * Get widget categories.
	 *
	 * Retrieve the list of categories the Bdevs Slider widget belongs to.
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return array Widget categories.
	 */
	public function get_categories() {
		return [ 'bdevs-elementor' ];
	}

	public function get_keywords() {
		return [ 'bdevs-shop' ];
	}

	public function get_script_depends() {
		return [ 'bdevs-elementor'];
	}

	// BDT Position
	protected function element_pack_position() {
	    $position_options = [
	        ''              => esc_html__('Default', 'bdevs-elementor'),
	        'top-left'      => esc_html__('Top Left', 'bdevs-elementor') ,
	        'top-center'    => esc_html__('Top Center', 'bdevs-elementor') ,
	        'top-right'     => esc_html__('Top Right', 'bdevs-elementor') ,
	        'center'        => esc_html__('Center', 'bdevs-elementor') ,
	        'center-left'   => esc_html__('Center Left', 'bdevs-elementor') ,
	        'center-right'  => esc_html__('Center Right', 'bdevs-elementor') ,
	        'bottom-left'   => esc_html__('Bottom Left', 'bdevs-elementor') ,
	        'bottom-center' => esc_html__('Bottom Center', 'bdevs-elementor') ,
	        'bottom-right'  => esc_html__('Bottom Right', 'bdevs-elementor') ,
	    ];

	    return $position_options;
	}

	protected function _register_controls() {
		$this->start_controls_section(
			'section_content_shop',
			[
				'label' => esc_html__( 'Shop', 'bdevs-elementor' ),
			]
		);

		$this->add_control(
			'image',
			[
				'label'   => esc_html__( 'Shop Image', 'bdevs-elementor' ),
				'type'    => Controls_Manager::MEDIA,
				'dynamic' => [ 'active' => true ],
				'description' => esc_html__( 'Add Your Shop Image', 'bdevs-elementor' ),
			]
		);

		$this->add_control(
			'shape_image_1',
			[
				'label'   => esc_html__( 'Shape Image 1', 'bdevs-elementor' ),
				'type'    => Controls_Manager::MEDIA,
				'dynamic' => [ 'active' => true ],
				'description' => esc_html__( 'Add Your Shape Image 1', 'bdevs-elementor' ),
			]
		);

		$this->add_control(
			'shape_image_2',
			[
				'label'   => esc_html__( 'Shape Image 2', 'bdevs-elementor' ),
				'type'    => Controls_Manager::MEDIA,
				'dynamic' => [ 'active' => true ],
				'description' => esc_html__( 'Add Your Shape Image 2', 'bdevs-elementor' ),
			]
		);

		$this->add_control(
			'shape_image_3',
			[
				'label'   => esc_html__( 'Shape Image 3', 'bdevs-elementor' ),
				'type'    => Controls_Manager::MEDIA,
				'dynamic' => [ 'active' => true ],
				'description' => esc_html__( 'Add Your Shape Image 3', 'bdevs-elementor' ),
			]
		);

		$this->add_control(
			'shape_image_4',
			[
				'label'   => esc_html__( 'Shape Image 4', 'bdevs-elementor' ),
				'type'    => Controls_Manager::MEDIA,
				'dynamic' => [ 'active' => true ],
				'description' => esc_html__( 'Add Your Shape Image 4', 'bdevs-elementor' ),
			]
		);

		$this->add_control(
			'heading',
			[
				'label'       => __( 'Heading', 'bdevs-elementor' ),
				'type'        => Controls_Manager::TEXTAREA,
				'placeholder' => __( 'Enter your heading', 'bdevs-elementor' ),
				'default'     => __( '', 'bdevs-elementor' ),
				'label_block' => true,
			]
		);	

		$this->add_control(
			'sub_heading',
			[
				'label'       => __( 'Sub Heading', 'bdevs-elementor' ),
				'type'        => Controls_Manager::TEXT,
				'placeholder' => __( 'Enter your sub heading', 'bdevs-elementor' ),
				'default'     => __( '', 'bdevs-elementor' ),
				'label_block' => true,
			]
		);	

		$this->add_control(
			'button_link',
			[
				'label'       => __( 'Link', 'bdevs-elementor' ),
				'type'        => Controls_Manager::TEXT,
				'placeholder' => __( 'Enter your link', 'bdevs-elementor' ),
				'default'     => __( '', 'bdevs-elementor' ),
				'label_block' => true,
			]
		);	

		$this->add_control(
			'button_text',
			[
				'label'       => __( 'Button Text', 'bdevs-elementor' ),
				'type'        => Controls_Manager::TEXT,
				'placeholder' => __( 'Enter your button bext', 'bdevs-elementor' ),
				'default'     => __( '', 'bdevs-elementor' ),
				'label_block' => true,
			]
		);	

		$this->add_control(
			'post_number',
			[
				'label'       => __( 'Post Number', 'bdevs-elementor' ),
				'type'        => Controls_Manager::NUMBER,
				'default'     => __( '4', 'bdevs-elementor' ),
				'label_block' => true,
			]
		);	
		$this->add_control(
			'post_order',
			[
				'label'     => esc_html__( 'Post Order', 'bdevs-elementor' ),
				'type'      => Controls_Manager::SELECT,
				'options'   => [
					'asc'  => esc_html__( 'ASC', 'bdevs-elementor' ),
					'desc' => esc_html__( 'DESC', 'bdevs-elementor' ),
				],
				'default'   => 'asc',
			]
		);

		$this->end_controls_section();



		$this->start_controls_section(
			'section_content_layout',
			[
				'label' => esc_html__( 'Layout', 'bdevs-elementor' ),
			]
		);

		$this->add_responsive_control(
			'align',
			[
				'label'   => esc_html__( 'Alignment', 'bdevs-elementor' ),
				'type'    => Controls_Manager::CHOOSE,
				'options' => [
					'left' => [
						'title' => esc_html__( 'Left', 'bdevs-elementor' ),
						'icon'  => 'fa fa-align-left',
					],
					'center' => [
						'title' => esc_html__( 'Center', 'bdevs-elementor' ),
						'icon'  => 'fa fa-align-center',
					],
					'right' => [
						'title' => esc_html__( 'Right', 'bdevs-elementor' ),
						'icon'  => 'fa fa-align-right',
					],
					'justify' => [
						'title' => esc_html__( 'Justified', 'bdevs-elementor' ),
						'icon'  => 'fa fa-align-justify',
					],
				],
				'prefix_class' => 'elementor%s-align-',
				'description'  => 'Use align to match position',
				'default'      => 'center',
			]
		);

		$this->add_control(
			'show_heading',
			[
				'label'   => esc_html__( 'Show Heading', 'bdevs-elementor' ),
				'type'    => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);	

		$this->add_control(
			'show_sub_heading',
			[
				'label'   => esc_html__( 'Show Sub Heading', 'bdevs-elementor' ),
				'type'    => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);		

		$this->add_control(
			'show_image',
			[
				'label'   => esc_html__( 'Show Image', 'bdevs-elementor' ),
				'type'    => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_content',
			[
				'label'   => esc_html__( 'Show Content', 'bdevs-elementor' ),
				'type'    => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$this->add_control(
			'show_button',
			[
				'label'   => esc_html__( 'Show Button', 'bdevs-elementor' ),
				'type'    => Controls_Manager::SWITCHER,
				'default' => 'yes',
			]
		);

		$this->end_controls_section();


	}

	public function render() {
		$settings  = $this->get_settings_for_display();
		/**
 * Template Name: Shop Sidebar
 * Description: A Page Template with a Page Builder design.
 *
 *
 * @see https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce/Templates
 * @version 3.4.0
 */

	defined( 'ABSPATH' ) || exit;
	global $product;
		?>




		<div class="product-area product-area-shape product-filter-wrapper pt-130 pb-130">
			<div class="container">
				<div class="row justify-content-center mb-55">
					<div class="col-xl-6 col-lg-8 col-md-10">
						<div class="section-title text-center">
							<?php if (( '' !== $settings['sub_heading'] ) && ( $settings['show_sub_heading'] )): ?>

							<h5><?php echo wp_kses_post($settings['sub_heading']); ?></h5>

						<?php endif; ?>	

						<?php if (( '' !== $settings['heading'] ) && ( $settings['show_heading'] )): ?>

						<h3><?php echo wp_kses_post($settings['heading']); ?></h3>

					<?php endif; ?>	

					<?php if (( '' !== $settings['image']['url'] ) && ( $settings['show_image'] )): ?>

					<div class="icon">

						<img src="<?php echo wp_kses_post($settings['image']['url']); ?>" alt="icon">

					</div>

				<?php endif; ?>	
			</div>
		</div>
	</div>
	<div class="row mb-60">
		<div class="col-xl-12">
			<div class="product-filter-nav">
				<button class="active" data-filter="*">
					<i class="flaticon-vegetable"></i>
					<span><?php echo esc_html__( 'Vegetables', 'fudee' )?></span>
				</button>
				<?php  $categories = get_terms('product_cat'); 
				foreach( (array)$categories as $categorie){

					$cat_name = $categorie->name; 
					$cat_slug = $categorie->slug; 
					$cat_desc = $categorie->description; 
					?>
					<button data-filter=".<?php echo esc_attr($cat_slug);?>">
						<i class="<?php echo esc_attr($cat_desc);?>"></i>
						<span><?php echo esc_attr($cat_name);?></span>
					</button>
				<?php } ?>
			</div>
		</div>
	</div>
	<div class="row product-filter-grid">
		<?php 
		$order = $settings['post_order'];
		$post_number = $settings['post_number'];
		$wp_query = new \WP_Query(array('posts_per_page' => $post_number,'post_type' => 'product',  'orderby' => 'ID', 'order' => $order));
		

		while ($wp_query -> have_posts()) : $wp_query -> the_post(); 
			global $post, $product;
			$cates = get_the_terms(get_the_ID(),'product_cat');
			$cate_name ='';
			$cate_slug ='';
			foreach((array)$cates as $cate){
				if(count($cates)>0){
					$cate_name .= $cate->name.' ';
					$cate_slug .= $cate->slug.' ';      
				} 
			} 
			;
			?> 
			<div class="col-xl-3 col-md-6 grid-item <?php echo esc_attr($cate_slug);?>">
				<div class="product-wrap">
					<div class="product-thumb">
						<?php
									  /**
									   * woocommerce_before_shop_loop_item hook.
									   *
									   * @hooked woocommerce_template_loop_product_link_open - 10
									   */
									  do_action( 'woocommerce_before_shop_loop_item' ); 

									  /**
									   * woocommerce_before_shop_loop_item_title hook.
									   *
									   * @hooked woocommerce_show_product_loop_sale_flash - 10
									   * @hooked woocommerce_template_loop_product_thumbnail - 10
									   */
									  do_action( 'woocommerce_before_shop_loop_item_title' );?>
									</div>
									<div class="product-details">
										<h5><a href="<?php the_permalink();?>"><?php the_title();?></a></h5>
										<?php 

									  /**
									   * woocommerce_after_shop_loop_item_title hook.
									   *
									   * @hooked woocommerce_template_loop_rating - 5
									   * @hooked woocommerce_template_loop_price - 10
									   */
									  do_action( 'woocommerce_after_shop_loop_item_title' ); ?>
									</div>
									<div class="product-hover">
										<ul class="product-btns">
											<li><a href="<?php echo wp_get_attachment_url(get_post_thumbnail_id());?>"><i class="far fa-expand"></i></a></li>
											<li><a href="<?php the_permalink();?>"><i class="far fa-heart"></i></a></li>
											<li><a href="#"><i class="far fa-repeat"></i></a></li>
										</ul>
										<?php 
					                  /**
					                   * woocommerce_after_shop_loop_item hook.
					                   *
					                   * @hooked woocommerce_template_loop_product_link_close - 5
					                   * @hooked woocommerce_template_loop_add_to_cart - 10
					                   */
					                  do_action( 'woocommerce_after_shop_loop_item' );
					                  ?>
					              </div>
					          </div>
					      </div>
					  <?php endwhile ?>
					</div>
					<?php if ( '' !== $settings['button_text'] ) : ?>
						<div class="row">
							<div class="col-xl-12 text-center">
								<a href="<?php echo wp_kses_post($settings['button_link']); ?>" class="a-btn btn-dark mt-50">
									<?php echo wp_kses_post($settings['button_text']); ?> <i class="fas fa-plus"></i>
								</a>
							</div>
						</div>
					<?php endif; ?>	
				</div>
				<?php if ( '' !== $settings['shape_image_1']['url'] ) : ?>
					<div class="shape-1">
						<img src="<?php echo wp_kses_post($settings['shape_image_1']['url']); ?>" alt="icon">
					</div>
				<?php endif; ?>	
				<?php if ( '' !== $settings['shape_image_2']['url'] ) : ?>
					<div class="shape-2">
						<img src="<?php echo wp_kses_post($settings['shape_image_2']['url']); ?>" alt="icon">
					</div>
				<?php endif; ?>	
				<?php if ( '' !== $settings['shape_image_3']['url'] ) : ?>
					<div class="shape-3">
						<img src="<?php echo wp_kses_post($settings['shape_image_3']['url']); ?>" alt="icon">
					</div>
				<?php endif; ?>	
				<?php if ( '' !== $settings['shape_image_4']['url'] ) : ?>
					<div class="shape-4">
						<img src="<?php echo wp_kses_post($settings['shape_image_4']['url']); ?>" alt="icon">
					</div>
				<?php endif; ?>	
			</div>


			<?php
		}

	}