[ SYSTEM ]: Linux wordpress 6.1.0-44-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.164-1 (2026-03-09) x86_64
[ SERVER ]: Apache/2.4.66 (Debian) | PHP: 8.2.30
[ USER ]: www-data | IP: 172.19.30.54
GEFORCE FILE MANAGER
/
var
/
www
/
html
/
wordpress
/
wp-content
/
plugins
/
elementor-pro
/
modules
/
woocommerce
/
skins
/
UPLOAD:
NAME
SIZE
QUICK PERMS
ACTIONS
📄 skin-classic.php
2,060 B
SET
[ EDIT ]
|
[ DEL ]
📄 skin-loop-product-taxonomy.php
835 B
SET
[ EDIT ]
|
[ DEL ]
📄 skin-loop-product.php
1,433 B
SET
[ EDIT ]
|
[ DEL ]
DELETE SELECTED
[ CLOSE ]
EDIT: skin-loop-product.php
<?php namespace ElementorPro\Modules\WooCommerce\Skins; use ElementorPro\Modules\LoopBuilder\Skins\Skin_Loop_Base; use ElementorPro\Modules\LoopBuilder\Module as Loop_Module; use ElementorPro\Modules\LoopBuilder\Widgets\Base as Loop_Widget_Base; use ElementorPro\Modules\Woocommerce\Traits\Products_Trait; use ElementorPro\Modules\Woocommerce\Module; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } /** * Loop Products * * Skin for Product queries in Loop widgets. * * @since 3.8.0 */ class Skin_Loop_Product extends Skin_Loop_Base { use Products_Trait; public function get_id() { return Module::LOOP_PRODUCT_SKIN_ID; } public function get_title() { return esc_html__( 'Products', 'elementor-pro' ); } public function render() { $this->parent->add_render_attribute( '_wrapper', 'class', 'woocommerce' ); global $wp_query; $wp_query->is_loop_product = true; parent::render(); $wp_query->is_loop_product = null; } /** * Register Query Controls * * Registers the controls for the query used by the Loop. * * @since 3.8.0 */ public function register_query_controls( Loop_Widget_Base $widget ) { $this->parent = $widget; $this->add_query_controls( Loop_Module::QUERY_ID ); } protected function render_post() { global $product; if ( ! $product instanceof \WC_Product ) { $product = wc_get_product( get_the_ID() ); } parent::render_post(); } }