ProShell v2.0
Dashboard
Server Info
Server: 158.106.128.192
PHP: 8.2.33
home
planet5
public_html
bansibaba.com
2026-09-16 18:09:24
Editing: products.php
Cancel
Save Changes
<?php namespace ElementorPro\Modules\Woocommerce\Widgets; use Elementor\Controls_Manager; use Elementor\Controls_Stack; use ElementorPro\Modules\QueryControl\Controls\Group_Control_Query; use ElementorPro\Modules\Woocommerce\Classes\Products_Renderer; use ElementorPro\Modules\Woocommerce\Classes\Current_Query_Renderer; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } class Products extends Products_Base { public function get_name() { return 'woocommerce-products'; } public function get_title() { return __( 'Products', 'elementor-pro' ); } public function get_icon() { return 'eicon-products'; } public function get_keywords() { return [ 'woocommerce', 'shop', 'store', 'product', 'archive' ]; } public function get_categories() { return [ 'woocommerce-elements', ]; } protected function register_query_controls() { $this->start_controls_section( 'section_query', [ 'label' => __( 'Query', 'elementor-pro' ), 'tab' => Controls_Manager::TAB_CONTENT, ] ); $this->add_group_control( Group_Control_Query::get_type(), [ 'name' => Products_Renderer::QUERY_CONTROL_NAME, 'post_type' => 'product', 'presets' => [ 'include', 'exclude', 'order' ], 'fields_options' => [ 'post_type' => [ 'default' => 'product', 'options' => [ 'current_query' => __( 'Current Query', 'elementor-pro' ), 'product' => __( 'Latest Products', 'elementor-pro' ), 'sale' => __( 'Sale', 'elementor-pro' ), 'featured' => __( 'Featured', 'elementor-pro' ), 'by_id' => _x( 'Manual Selection', 'Posts Query Control', 'elementor-pro' ), ], ], 'orderby' => [ 'default' => 'date', 'options' => [ 'date' => __( 'Date', 'elementor-pro' ), 'title' => __( 'Title', 'elementor-pro' ), 'price' => __( 'Price', 'elementor-pro' ), 'popularity' => __( 'Popularity', 'elementor-pro' ), 'rating' => __( 'Rating', 'elementor-pro' ), 'rand' => __( 'Random', 'elementor-pro' ), 'menu_order' => __( 'Menu Order', 'elementor-pro' ), ], ], 'exclude' => [ 'options' => [ 'current_post' => __( 'Current Post', 'elementor-pro' ), 'manual_selection' => __( 'Manual Selection', 'elementor-pro' ), 'terms' => __( 'Term', 'elementor-pro' ), ], ], 'include' => [ 'options' => [ 'terms' => __( 'Term', 'elementor-pro' ), ], ], ], 'exclude' => [ 'posts_per_page', 'exclude_authors', 'authors', 'offset', 'related_fallback', 'related_ids', 'query_id', 'avoid_duplicates', 'ignore_sticky_posts', ], ] ); $this->end_controls_section(); } protected function _register_controls() { $this->start_controls_section( 'section_content', [ 'label' => __( 'Content', 'elementor-pro' ), ] ); $this->add_responsive_control( 'columns', [ 'label' => __( 'Columns', 'elementor-pro' ), 'type' => Controls_Manager::NUMBER, 'prefix_class' => 'elementor-products-columns%s-', 'min' => 1, 'max' => 12, 'default' => Products_Renderer::DEFAULT_COLUMNS_AND_ROWS, 'required' => true, 'render_type' => 'template', 'device_args' => [ Controls_Stack::RESPONSIVE_TABLET => [ 'required' => false, ], Controls_Stack::RESPONSIVE_MOBILE => [ 'required' => false, ], ], 'min_affected_device' => [ Controls_Stack::RESPONSIVE_DESKTOP => Controls_Stack::RESPONSIVE_TABLET, Controls_Stack::RESPONSIVE_TABLET => Controls_Stack::RESPONSIVE_TABLET, ], ] ); $this->add_control( 'rows', [ 'label' => __( 'Rows', 'elementor-pro' ), 'type' => Controls_Manager::NUMBER, 'default' => Products_Renderer::DEFAULT_COLUMNS_AND_ROWS, 'render_type' => 'template', 'range' => [ 'px' => [ 'max' => 20, ], ], ] ); $this->add_control( 'paginate', [ 'label' => __( 'Pagination', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', ] ); $this->add_control( 'allow_order', [ 'label' => __( 'Allow Order', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', 'condition' => [ 'paginate' => 'yes', ], ] ); $this->add_control( 'wc_notice_frontpage', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'Ordering is not available if this widget is placed in your front page. Visible on frontend only.', 'elementor-pro' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', 'condition' => [ 'paginate' => 'yes', 'allow_order' => 'yes', ], ] ); $this->add_control( 'show_result_count', [ 'label' => __( 'Show Result Count', 'elementor-pro' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', 'condition' => [ 'paginate' => 'yes', ], ] ); $this->end_controls_section(); $this->register_query_controls(); parent::_register_controls(); } protected function get_shortcode_object( $settings ) { if ( 'current_query' === $settings[ Products_Renderer::QUERY_CONTROL_NAME . '_post_type' ] ) { $type = 'current_query'; return new Current_Query_Renderer( $settings, $type ); } $type = 'products'; return new Products_Renderer( $settings, $type ); } protected function render() { if ( WC()->session ) { wc_print_notices(); } // For Products_Renderer. if ( ! isset( $GLOBALS['post'] ) ) { $GLOBALS['post'] = null; // WPCS: override ok. } $settings = $this->get_settings(); $shortcode = $this->get_shortcode_object( $settings ); $content = $shortcode->get_content(); if ( $content ) { echo $content; } elseif ( $this->get_settings( 'nothing_found_message' ) ) { echo '<div class="elementor-nothing-found elementor-products-nothing-found">' . esc_html( $this->get_settings( 'nothing_found_message' ) ) . '</div>'; } } public function render_plain_content() {} }
Upload Files
Cancel
Upload
Create New
Cancel
Create
Change Permissions
Cancel
Save
Change Date
Cancel
Save
Rename Item
Cancel
Save
Confirm Delete
Are you sure you want to delete the selected items?
Cancel
Delete