$48 GRAYBYTE WORDPRESS FILE MANAGER $96

SERVER : premium201.web-hosting.com #1 SMP Wed Mar 26 12:08:09 UTC 2025
SERVER IP : 172.67.217.254 | ADMIN IP 216.73.216.180
OPTIONS : CRL = ON | WGT = ON | SDO = OFF | PKEX = OFF
DEACTIVATED : mail

/home/bravrvjk/cepurhuye.rw/wp-content/plugins/bopea-function/block/

HOME
Current File : /home/bravrvjk/cepurhuye.rw/wp-content/plugins/bopea-function/block//feature-product.php
<?php
namespace bopeaElementor\Widgets;
use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Typography;
use Elementor\Schemes\Color;
use Elementor\Schemes\Typography;
use Elementor\Utils;
use Elementor\Control_Media;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Background;
use Elementor\Repeater;
use Elementor\Icons_Manager;
if ( ! defined( 'ABSPATH' ) ) exit;

class bopea_product_list extends Widget_Base {

  public $base;

    public function get_name() {
        return 'bopea-product-list';
    }

    public function get_title() {
        return esc_html__( 'Product List', 'bopea-function' );
    }

    public function get_icon() {
        return 'eicon-elementor-circle jl-icons';
    }

    public function get_categories() {
       return [ 'bopea-elements' ];
    }

    protected function register_controls() {

    $this->start_controls_section(
            'section_tab',
            [
                'label' => esc_html__('Product Query And Settings', 'bopea-function'),
            ]
        );

        $this->add_control(
			'post_status',
			[
				'label' => esc_html__( 'Post Status', 'bopea-function' ),
				'placeholder' => esc_html__( 'Choose Post Status', 'bopea-function' ),
				'type' => \Elementor\Controls_Manager::SELECT2,
				'label_block' => true,
				'default' => 'publish',
				'multiple' => true,
				'options' => $this->bopea_get_post_status(),
			]
		);

		$this->add_control(
			'product_types',
			[
				'label' => esc_html__( 'Product Types', 'bopea-function' ),
				'placeholder' => esc_html__( 'Choose Products to Include', 'bopea-function' ),
				'type' => \Elementor\Controls_Manager::SELECT2,
				'label_block' => true,
				'multiple' => true,
				'default' => '',
				'options' => $this->bopea_get_product_types(),
			]
		);

        $this->add_control(
            'product_cats',
            [
                'label' =>esc_html__('Select Categories', 'bopea-function'),
                'type'      => Controls_Manager::SELECT2,
                 'options'   => $this->bopea_get_product_cats(),
                'label_block' => true,
                'multiple'  => true,
            ]
        );

        $this->add_control(
      'product_tags', [
        'label'       => esc_html__( 'Tag Slug', 'bopea-function' ),
        'description' => esc_html__( 'Example: tagslug1,tagslug2,tagslug3', 'bopea-function' ),
        'type'        => Controls_Manager::TEXT,
        'label_block'   => true
      ]
      );

        $this->add_control(
      'posts_per_page',
      array(
        'label'       => esc_html__( 'Posts per Page', 'bopea-function' ),
        'type'        => Controls_Manager::NUMBER,
        'default'     => '4'
      )
    );

        $this->add_control(
      'offset',
      array(
        'label'       => esc_html__( 'Post Offset', 'bopea-function' ),
        'type'        => Controls_Manager::NUMBER,
        'default'     => '',
      )
    );

    $this->add_control(
      'post_not_in', [
        'label'       => esc_html__( 'Exclude Post IDs', 'bopea-function' ),
          'description' => esc_html__( 'Example: 1,2,3', 'bopea-function' ),
          'default'     => '',
        'type'        => Controls_Manager::TEXT,
        'label_block'   => true
      ]
      );

      $this->add_control(
      'post_in', [
        'label'       => esc_html__( 'Post IDs Filter', 'bopea-function' ),
          'description' => esc_html__( 'Example: 1,2,3', 'bopea-function' ),
          'default'     => '',
        'type'        => Controls_Manager::TEXT,
        'label_block'   => true
      ]
      );

      $this->add_control(
            'order',
            [
                'label'     =>esc_html__( 'Sort Order', 'bopea-function' ),
                'type'      => Controls_Manager::SELECT,
                'default'   => 'date',
                'options'   => [
                        'date'      =>esc_html__( 'Latest Post', 'bopea-function' ),
                        'rand'      =>esc_html__( 'Random', 'bopea-function' ),
                        'modified'      =>esc_html__( 'Modified', 'bopea-function' )
                    ],
            ]
        );

        $this->add_group_control(
    			\Elementor\Group_Control_Image_Size::get_type(),
    			[
    				'name' => 'thumbnail_size',
    				'default' => 'medium_large',
    			]
    		);

    $this->end_controls_section();

    $this->start_controls_section(
      'section_tab_style', [
        'label'  => esc_html__( 'Product Custom Style', 'bopea-function' ),
        'tab'     => Controls_Manager::TAB_STYLE,
      ]
      );      

      $this->add_responsive_control(
        'grid_col',
        [
            'label' => __( 'Product columns', 'bopea-function' ),
            'type' => Controls_Manager::SLIDER,
            'default' => [
            'size' => 4,
            ],
            'tablet_default' => [
              'size' => 4,
            ],
            'mobile_default' => [
              'size' => 2,
            ],
            'range' => [
                'px' => [
                    'min' => 1,
                    'max' => 12,
                    'step' => 1,
                ]
            ],
            'selectors' => [
            '{{WRAPPER}} .jl_wcli_in' => '--jl-wc-col: {{SIZE}} !important;',
            ],
        ]
      );

      $this->add_responsive_control(
        'grid_col_gap',
        [
            'label' => __( 'Grid space columns', 'bopea-function' ),
            'type' => Controls_Manager::SLIDER,
            'default' => [
            'size' => 30,
            ],
            'tablet_default' => [
              'size' => 30,
            ],
            'mobile_default' => [
              'size' => 20,
            ],
            'range' => [
                'px' => [
                    'min' => 1,
                    'max' => 500,
                    'step' => 1,
                ]
            ],
            'selectors' => [
            '{{WRAPPER}} .jl_wcli_in' => '--jl-wc-col-gap: {{SIZE}}{{UNIT}} !important;',
            ],
        ]
      );

      $this->add_responsive_control(
        'grid_row_gap',
        [
            'label' => __( 'Grid space row', 'bopea-function' ),
            'type' => Controls_Manager::SLIDER,
            'default' => [
            'size' => 30,
            ],
            'tablet_default' => [
              'size' => 30,
            ],
            'mobile_default' => [
              'size' => 20,
            ],
            'range' => [
                'px' => [
                    'min' => 1,
                    'max' => 500,
                    'step' => 1,
                ]
            ],
            'selectors' => [
            '{{WRAPPER}} .jl_wcli_in' => '--jl-wc-row-gap: {{SIZE}}{{UNIT}} !important;',
            ],
        ]
      );

      $this->add_responsive_control(
        'pro_img_height',
        [
            'label' => __( 'Product image height', 'bopea-function' ),
            'type' => Controls_Manager::SLIDER,
            'range' => [
                'px' => [
                    'min' => 0,
                    'max' => 200,
                    'step' => 1,
                ]
            ],
            'selectors' => [
            '{{WRAPPER}} .jl_wcli_in' => '--jl-img-h: {{SIZE}}{{UNIT}};',
            ],
        ]
      );

      $this->add_responsive_control(
        'pro_title',
        [
            'label' => __( 'Product title font size', 'bopea-function' ),
            'type' => Controls_Manager::SLIDER,
            'range' => [
                'px' => [
                    'min' => 0,
                    'max' => 200,
                    'step' => 1,
                ]
            ],
            'selectors' => [
            '{{WRAPPER}} .jl_wcli_in' => '--jl-pro-title: {{SIZE}}{{UNIT}};',
            ],
        ]
      );

      $this->add_responsive_control(
        'pro_price',
        [
            'label' => __( 'Product price font size', 'bopea-function' ),
            'type' => Controls_Manager::SLIDER,
            'range' => [
                'px' => [
                    'min' => 0,
                    'max' => 200,
                    'step' => 1,
                ]
            ],
            'selectors' => [
            '{{WRAPPER}} .jl_wcli_in' => '--jl-pro-price: {{SIZE}}{{UNIT}};',
            ],
        ]
      );

      $this->add_responsive_control(
        'jl_item_img_radius',
        [
            'label' => __( 'product border radius', 'bopea-function' ),
            'type' => Controls_Manager::SLIDER,                        
            'range' => [
                'px' => [
                    'min' => 1,
                    'max' => 500,
                    'step' => 1,
                ]
            ],
            'selectors' => [            
            '{{WRAPPER}}' => '--jl-border-rounded: {{SIZE}}px !important;',
            ],
        ]
      );

      $this->add_control(
      'pro_color',
      [
        'label' => __( 'Product text color', 'bopea-function' ),
        'type' => Controls_Manager::COLOR,
        'selectors' => [
            '{{WRAPPER}} .jl_wcli_w .jl_wc_title a, {{WRAPPER}} .jl_wcli_w .jl_wc_price' => 'color: {{VALUE}} !important'
        ]
      ]
    );

      $this->add_control(
      'pro_color_dark',
      [
        'label' => __( 'Product text color dark mode', 'bopea-function' ),
        'type' => Controls_Manager::COLOR,
        'selectors' => [
            '.options_dark_skin {{WRAPPER}} .jl_wcli_w .jl_wc_title a, .options_dark_skin {{WRAPPER}} .jl_wcli_w .jl_wc_price' => 'color: {{VALUE}} !important'
        ]
      ]
    );

        $this->end_controls_section();
    }

      public function bopea_get_product_types() {
        $product_types_lists = wc_get_product_types();
        return $product_types_lists;
      }

      public function bopea_get_post_status() {
          $post_statuses = array();
          $post_statuses['any'] = esc_html__('Any', 'bopea-function');
          $post_statuses = get_post_statuses();
          return $post_statuses;
      }      

      public function bopea_get_product_cats( $category='product_cat' ) {
            $product_categories_list = array();
            $args = array(
                'taxonomy'   => $category,
            );
            $args = apply_filters( 'bopea_get_product_cat_args', $args );
            $product_categories = get_terms($args);
        
            if( !empty($product_categories) ){
              foreach ($product_categories as $cat) {
                $product_categories_list[$cat->slug] = $cat->name;
              }
            }
            return $product_categories_list;
      }

      public function bopea_get_attachment_alt( $attachment_id ) {
          if ( ! $attachment_id ) {
            return '';
          }
          $attachment = get_post( $attachment_id );
          if ( ! $attachment ) {
            return '';
          }
          $alt = get_post_meta( $attachment_id, '_wp_attachment_image_alt', true );
          if ( ! $alt ) {
            $alt = $attachment->post_excerpt;
            if ( ! $alt ) {
              $alt = $attachment->post_title;
            }
          }
          return trim( strip_tags( $alt ) );
        }      
      
    
protected function render( ) {
      $settings = $this->get_settings_for_display();

      $args['status'] = 'publish';
  		if( isset($settings['post_status']) && is_array($settings['post_status']) && !empty($settings['post_status']) ){
  			$args['status'] = $settings['post_status'];
  		}

  		if( isset($settings['product_types']) && is_array($settings['product_types']) && !empty($settings['product_types']) ){
  			$args['type'] = $settings['product_types'];
  		}

      if( isset($settings['product_cats']) && is_array($settings['product_cats']) && !empty($settings['product_cats']) ){
  			$args['category'] = $settings['product_cats'];
  		}

      if( isset($settings['product_tags']) && !empty($settings['product_tags']) ){
  			$args['tag'] = explode (",", $settings['product_tags']);
  		}

      if( isset($settings['post_not_in']) && !empty($settings['post_not_in']) ){
  			$args['exclude'] = explode (",", $settings['post_not_in']);
  		}

      if( isset($settings['post_in']) && !empty($settings['post_in']) ){
  			$args['include'] = explode (",", $settings['post_in']);
  		}

  		if( isset($settings['posts_per_page']) && intval($settings['posts_per_page']) > 0 ){
  			$args['limit'] = $settings['posts_per_page'];
  		}

  		if( isset($settings['offset']) && !empty($settings['offset']) ){
  			$args['offset'] = $settings['offset'];
  		}

      if( isset($settings['order']) && !empty($settings['order']) ){
  			$args['orderby'] = $settings['order'];
  		}
      $products = wc_get_products($args);
      ?>
      <div class="jl_wcli_w">
        <div class="jl_wcli_in">
        <?php
        if ( sizeof($products) > 0 ) :
        foreach ( $products as $product ) :

        $thumbnail_id = $product->get_image_id();
        require( BOPEA_ADDONS_DIR_PATH . 'block/tpl-product.php' );

        endforeach;
        endif;
        ?>
        </div>
      </div>
      <?php
    }
}


Current_dir [ WRITEABLE ] Document_root [ WRITEABLE ]


[ Back ]
NAME
SIZE
LAST TOUCH
USER
CAN-I?
FUNCTIONS
..
--
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0755
ads-img.php
6.463 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
cart.php
17.675 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
category-list.php
28.115 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
contact-form.php
25.032 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
current-date.php
7.465 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
custom-banner.php
20.019 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
custom-sg-cat.php
1.421 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
custom-sg-meta.php
1.507 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
dark-mode-switcher.php
3.141 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
element-button.php
27.455 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
elementor.php
50.17 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
feature-box.php
11.205 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
feature-carousel.php
39.477 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
feature-center-slider.php
32.664 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
feature-hover.php
17.747 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
feature-product.php
13.024 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
feature-slider-tab.php
34.146 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
feature-slider.php
43.884 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
feature-video.php
22.095 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-1.php
28.733 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-10.php
25.319 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-11.php
25.213 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-12.php
28.478 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-13.php
37.482 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-18.php
32.596 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-19.php
31.406 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-2.php
28.093 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-20.php
27.293 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-3.php
27.961 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-4.php
28.507 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-5.php
32.721 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-6.php
35.081 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-7.php
39.264 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-8.php
32.762 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
featured-layout-9.php
30.399 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
gallery.php
7.856 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
grid-circle.php
35.744 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
grid-overlay.php
38.916 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
grid-post.php
50.369 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
large-post.php
46.632 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
layouts.php
1.821 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
list-number.php
43.876 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
list-post.php
42.161 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
logo.php
7.302 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
main-menu-setting.php
0.878 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
main-menu.php
23.354 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
marquee-text.php
19.204 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
mobile-menu.php
9.148 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
newsticker.php
22.594 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
search-button.php
9.592 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
section-title.php
42.684 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
simple-menu.php
24.479 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
simple-text.php
6.621 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
small-2main-below-list.php
49.41 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
small-list-post.php
48.257 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
small-main-below-2list.php
51.024 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
small-main-below-list.php
49.909 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
small-main-right-list.php
50.874 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
small-overlay-main-below-list.php
47.359 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
social.php
113.031 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
tpl-product.php
5.371 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644
xsmall-list-post.php
43.337 KB
25 Nov 2025 10.53 AM
bravrvjk / bravrvjk
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025 CONTACT ME
Static GIF