Files
proelements/modules/woocommerce/widgets/archive-products.php
proelements 9ac2bf2aa0 v3.33.1
2025-11-13 15:18:34 +02:00

205 lines
4.6 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace ElementorPro\Modules\Woocommerce\Widgets;
use Elementor\Controls_Manager;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Group_Control_Typography;
use ElementorPro\Modules\Woocommerce\Classes\Products_Renderer;
use ElementorPro\Plugin;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class Archive_Products extends Products {
public function get_name() {
return 'wc-archive-products';
}
public function get_title() {
return esc_html__( 'Archive Products', 'elementor-pro' );
}
public function get_keywords() {
return [ 'woocommerce', 'shop', 'store', 'product', 'archive' ];
}
public function get_categories() {
return [
'woocommerce-elements-archive',
];
}
public function has_widget_inner_wrapper(): bool {
return ! Plugin::elementor()->experiments->is_feature_active( 'e_optimized_markup' );
}
/**
* Get style dependencies.
*
* Retrieve the list of style dependencies the widget requires.
*
* @since 3.24.0
* @access public
*
* @return array Widget style dependencies.
*/
public function get_style_depends(): array {
return [ 'widget-woocommerce-products', 'widget-woocommerce-products-archive' ];
}
protected function register_controls() {
parent::register_controls();
$this->remove_responsive_control( 'columns' );
$this->remove_responsive_control( 'rows' );
$this->remove_control( 'orderby' );
$this->remove_control( 'order' );
$this->update_control(
'products_class',
[
'prefix_class' => 'elementor-products-grid elementor-',
]
);
// Should be kept as hidden since required for "allow_order"
$this->update_control(
'paginate',
[
'type' => 'hidden',
'default' => 'yes',
]
);
$this->update_control(
'allow_order',
[
'default' => 'yes',
]
);
$this->start_injection( [
'at' => 'before',
'of' => 'allow_order',
] );
if ( ! get_theme_support( 'woocommerce' ) ) {
$this->add_control(
'wc_notice_wc_not_supported',
[
'type' => Controls_Manager::ALERT,
'alert_type' => 'warning',
'content' => esc_html__( 'Looks like you are using WooCommerce, while your theme does not support it. Please consider switching themes.', 'elementor-pro' ),
]
);
}
$this->add_control(
'wc_notice_use_customizer',
[
'type' => Controls_Manager::ALERT,
'alert_type' => 'info',
'content' => esc_html__( 'To change the Products Archives layout, go to Appearance > Customize.', 'elementor-pro' ),
]
);
$this->add_control(
'wc_notice_wrong_data',
[
'type' => Controls_Manager::ALERT,
'alert_type' => 'info',
'content' => esc_html__( 'The editor preview might look different from the live site. Please make sure to check the frontend.', 'elementor-pro' ),
]
);
$this->end_injection();
$this->update_control(
'show_result_count',
[
'default' => 'yes',
]
);
$this->update_control(
'section_query',
[
'type' => 'hidden',
]
);
$this->update_control(
Products_Renderer::QUERY_CONTROL_NAME . '_post_type',
[
'default' => 'current_query',
]
);
$this->start_controls_section(
'section_advanced',
[
'label' => esc_html__( 'Advanced', 'elementor-pro' ),
]
);
$this->add_control(
'nothing_found_message',
[
'label' => esc_html__( 'Nothing Found Message', 'elementor-pro' ),
'type' => Controls_Manager::TEXTAREA,
'default' => esc_html__( 'It seems we cant find what youre looking for.', 'elementor-pro' ),
'dynamic' => [
'active' => true,
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_nothing_found_style',
[
'tab' => Controls_Manager::TAB_STYLE,
'label' => esc_html__( 'Nothing Found Message', 'elementor-pro' ),
'condition' => [
'nothing_found_message!' => '',
],
]
);
$this->add_control(
'nothing_found_color',
[
'label' => esc_html__( 'Color', 'elementor-pro' ),
'type' => Controls_Manager::COLOR,
'global' => [
'default' => Global_Colors::COLOR_TEXT,
],
'selectors' => [
'{{WRAPPER}} .elementor-products-nothing-found' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
Group_Control_Typography::get_type(),
[
'name' => 'nothing_found_typography',
'global' => [
'default' => Global_Typography::TYPOGRAPHY_TEXT,
],
'selector' => '{{WRAPPER}} .elementor-products-nothing-found',
]
);
$this->end_controls_section();
}
public function get_group_name() {
return 'woocommerce';
}
}