Файловый менеджер - Редактировать - /home/adiggxhn/ics.gt/wp-content/plugins/uicore-elements/includes/widgets/theme-builder/post-featured-image.php
Ðазад
<?php namespace UiCoreElements\ThemeBuilder\Widgets; defined('ABSPATH') || exit(); use UiCoreElements\UiCoreWidget; use UiCoreELements\Helper; use Elementor\Controls_Manager; use Elementor\Group_Control_Typography; use Elementor\Group_Control_Text_Shadow; use Elementor\Group_Control_Image_Size; use Elementor\Group_Control_Css_Filter; use Elementor\Group_Control_Border; use Elementor\Group_Control_Box_Shadow; use Elementor\Utils; use Elementor\Core\Kits\Documents\Tabs\Global_Colors; use Elementor\Core\Kits\Documents\Tabs\Global_Typography; /** * Featured Image widget. * * @since 1.3.3 */ class Featured_Image extends UiCoreWidget { public function get_name() { return 'featured-image'; } public function get_title() { return esc_html__('Post Featured Image', 'uicore-elements'); } public function get_icon() { return 'eicon-featured-image ui-e-widget'; } public function get_categories() { return ['uicore', 'uicore-theme-builder']; } public function get_keywords() { return ['image', 'photo', 'visual', 'featured', 'post', 'page', 'uicore']; } public function get_styles() { return []; } public function get_scripts() { return []; } public function has_widget_inner_wrapper(): bool { return ! \Elementor\Plugin::$instance->experiments->is_feature_active('e_optimized_markup'); } protected function register_controls() { $this->start_controls_section( 'section_image', [ 'label' => esc_html__('Image', 'uicore-elements'), ] ); $this->add_control( 'image_size', [ 'label' => esc_html__('Image Size', 'uicore-elements'), 'type' => Controls_Manager::SELECT, 'default' => 'uicore-medium', 'options' => Helper::get_images_sizes(), ] ); $this->add_control( 'link_to', [ 'label' => esc_html__('Link', 'uicore-elements'), 'type' => Controls_Manager::SELECT, 'default' => 'none', 'options' => [ 'none' => esc_html__('None', 'uicore-elements'), 'post' => esc_html__('Post', 'uicore-elements'), 'custom' => esc_html__('Custom URL', 'uicore-elements'), ], ] ); $this->add_control( 'link', [ 'label' => esc_html__('Link', 'uicore-elements'), 'type' => Controls_Manager::URL, 'dynamic' => [ 'active' => true, ], 'condition' => [ 'link_to' => 'custom', ], 'show_label' => false, ] ); $this->end_controls_section(); $this->start_controls_section( 'section_style_image', [ 'label' => esc_html__('Image', 'uicore-elements'), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_responsive_control( 'align', [ 'label' => esc_html__('Alignment', 'uicore-elements'), 'type' => Controls_Manager::CHOOSE, 'options' => [ 'left' => [ 'title' => esc_html__('Left', 'uicore-elements'), 'icon' => 'eicon-text-align-left', ], 'center' => [ 'title' => esc_html__('Center', 'uicore-elements'), 'icon' => 'eicon-text-align-center', ], 'right' => [ 'title' => esc_html__('Right', 'uicore-elements'), 'icon' => 'eicon-text-align-right', ], ], 'selectors' => [ '{{WRAPPER}}' => 'text-align: {{VALUE}};', ], ] ); $this->add_responsive_control( 'width', [ 'label' => esc_html__('Width', 'uicore-elements'), 'type' => Controls_Manager::SLIDER, 'default' => [ 'unit' => '%', ], 'tablet_default' => [ 'unit' => '%', ], 'mobile_default' => [ 'unit' => '%', ], 'size_units' => ['px', '%', 'em', 'rem', 'vw', 'custom'], 'range' => [ '%' => [ 'min' => 1, 'max' => 100, ], 'px' => [ 'min' => 1, 'max' => 1000, ], 'vw' => [ 'min' => 1, 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}} img' => 'width: {{SIZE}}{{UNIT}};', ], ] ); $this->add_responsive_control( 'space', [ 'label' => esc_html__('Max Width', 'uicore-elements'), 'type' => Controls_Manager::SLIDER, 'default' => [ 'unit' => '%', ], 'tablet_default' => [ 'unit' => '%', ], 'mobile_default' => [ 'unit' => '%', ], 'size_units' => ['px', '%', 'em', 'rem', 'vw', 'custom'], 'range' => [ '%' => [ 'min' => 1, 'max' => 100, ], 'px' => [ 'min' => 1, 'max' => 1000, ], 'vw' => [ 'min' => 1, 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}} img' => 'max-width: {{SIZE}}{{UNIT}};', ], ] ); $this->add_responsive_control( 'height', [ 'label' => esc_html__('Height', 'uicore-elements'), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', '%', 'em', 'rem', 'vh', 'custom'], 'range' => [ 'px' => [ 'min' => 1, 'max' => 500, ], 'vh' => [ 'min' => 1, 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}} img' => 'height: {{SIZE}}{{UNIT}};', ], ] ); $this->add_responsive_control( 'object-fit', [ 'label' => esc_html__('Object Fit', 'uicore-elements'), 'type' => Controls_Manager::SELECT, 'condition' => [ 'height[size]!' => '', ], 'options' => [ '' => esc_html__('Default', 'uicore-elements'), 'fill' => esc_html__('Fill', 'uicore-elements'), 'cover' => esc_html__('Cover', 'uicore-elements'), 'contain' => esc_html__('Contain', 'uicore-elements'), 'scale-down' => esc_html__('Scale Down', 'uicore-elements'), ], 'default' => '', 'selectors' => [ '{{WRAPPER}} img' => 'object-fit: {{VALUE}};', ], ] ); $this->add_responsive_control( 'object-position', [ 'label' => esc_html__('Object Position', 'uicore-elements'), 'type' => Controls_Manager::SELECT, 'options' => [ 'center center' => esc_html__('Center Center', 'uicore-elements'), 'center left' => esc_html__('Center Left', 'uicore-elements'), 'center right' => esc_html__('Center Right', 'uicore-elements'), 'top center' => esc_html__('Top Center', 'uicore-elements'), 'top left' => esc_html__('Top Left', 'uicore-elements'), 'top right' => esc_html__('Top Right', 'uicore-elements'), 'bottom center' => esc_html__('Bottom Center', 'uicore-elements'), 'bottom left' => esc_html__('Bottom Left', 'uicore-elements'), 'bottom right' => esc_html__('Bottom Right', 'uicore-elements'), ], 'default' => 'center center', 'selectors' => [ '{{WRAPPER}} img' => 'object-position: {{VALUE}};', ], 'condition' => [ 'height[size]!' => '', 'object-fit' => ['cover', 'contain', 'scale-down'], ], ] ); $this->add_control( 'separator_panel_style', [ 'type' => Controls_Manager::DIVIDER, 'style' => 'thick', ] ); $this->start_controls_tabs('image_effects'); $this->start_controls_tab( 'normal', [ 'label' => esc_html__('Normal', 'uicore-elements'), ] ); $this->add_control( 'opacity', [ 'label' => esc_html__('Opacity', 'uicore-elements'), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 1, 'min' => 0.10, 'step' => 0.01, ], ], 'selectors' => [ '{{WRAPPER}} img' => 'opacity: {{SIZE}};', ], ] ); $this->add_group_control( Group_Control_Css_Filter::get_type(), [ 'name' => 'css_filters', 'selector' => '{{WRAPPER}} img', ] ); $this->end_controls_tab(); $this->start_controls_tab( 'hover', [ 'label' => esc_html__('Hover', 'uicore-elements'), ] ); $this->add_control( 'opacity_hover', [ 'label' => esc_html__('Opacity', 'uicore-elements'), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'max' => 1, 'min' => 0.10, 'step' => 0.01, ], ], 'selectors' => [ '{{WRAPPER}}:hover img' => 'opacity: {{SIZE}};', ], ] ); $this->add_group_control( Group_Control_Css_Filter::get_type(), [ 'name' => 'css_filters_hover', 'selector' => '{{WRAPPER}}:hover img', ] ); $this->add_control( 'background_hover_transition', [ 'label' => esc_html__('Transition Duration', 'uicore-elements') . ' (s)', 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 3, 'step' => 0.1, ], ], 'selectors' => [ '{{WRAPPER}} img' => 'transition-duration: {{SIZE}}s', ], ] ); $this->add_control( 'hover_animation', [ 'label' => esc_html__('Hover Animation', 'uicore-elements'), 'type' => Controls_Manager::HOVER_ANIMATION, ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'image_border', 'selector' => '{{WRAPPER}} img', 'separator' => 'before', ] ); $this->add_responsive_control( 'image_border_radius', [ 'label' => esc_html__('Border Radius', 'uicore-elements'), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => ['px', '%', 'em', 'rem', 'custom'], 'selectors' => [ '{{WRAPPER}} img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'image_box_shadow', 'exclude' => [ 'box_shadow_position', ], 'selector' => '{{WRAPPER}} img', ] ); $this->end_controls_section(); $this->start_controls_section( 'section_style_caption', [ 'label' => esc_html__('Caption', 'uicore-elements'), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'image[url]!' => '', 'caption_source!' => 'none', ], ] ); $this->add_responsive_control( 'caption_align', [ 'label' => esc_html__('Alignment', 'uicore-elements'), 'type' => Controls_Manager::CHOOSE, 'options' => [ 'left' => [ 'title' => esc_html__('Left', 'uicore-elements'), 'icon' => 'eicon-text-align-left', ], 'center' => [ 'title' => esc_html__('Center', 'uicore-elements'), 'icon' => 'eicon-text-align-center', ], 'right' => [ 'title' => esc_html__('Right', 'uicore-elements'), 'icon' => 'eicon-text-align-right', ], 'justify' => [ 'title' => esc_html__('Justified', 'uicore-elements'), 'icon' => 'eicon-text-align-justify', ], ], 'default' => '', 'selectors' => [ '{{WRAPPER}} .widget-image-caption' => 'text-align: {{VALUE}};', ], ] ); $this->add_control( 'text_color', [ 'label' => esc_html__('Text Color', 'uicore-elements'), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => [ '{{WRAPPER}} .widget-image-caption' => 'color: {{VALUE}};', ], 'global' => [ 'default' => Global_Colors::COLOR_TEXT, ], ] ); $this->add_control( 'caption_background_color', [ 'label' => esc_html__('Background Color', 'uicore-elements'), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .widget-image-caption' => 'background-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'caption_typography', 'selector' => '{{WRAPPER}} .widget-image-caption', 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], ] ); $this->add_group_control( Group_Control_Text_Shadow::get_type(), [ 'name' => 'caption_text_shadow', 'selector' => '{{WRAPPER}} .widget-image-caption', ] ); $this->add_responsive_control( 'caption_space', [ 'label' => esc_html__('Spacing', 'uicore-elements'), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', 'em', 'rem', 'custom'], 'range' => [ 'px' => [ 'max' => 100, ], 'em' => [ 'min' => 0, 'max' => 10, ], 'rem' => [ 'min' => 0, 'max' => 10, ], ], 'selectors' => [ '{{WRAPPER}} .widget-image-caption' => 'margin-block-start: {{SIZE}}{{UNIT}};', ], ] ); $this->end_controls_section(); } protected function render() { $settings = $this->get_settings_for_display(); $id = get_post_thumbnail_id(get_the_ID()); $url = get_the_post_thumbnail_url(get_the_ID(), $settings['image_size']); // Build image data to be used in Elementor render method if (!$id || !$url) { if ($this->is_edit_mode()) { $settings['image'] = [ 'url' => Utils::get_placeholder_image_src(), 'id' => 0, ]; } else { return; } // Featured image set case } else { $settings['image'] = [ 'id' => $id, 'url' => $url, ]; } $link = $this->get_link_url($settings); if ($link) { $this->add_link_attributes('link', $link); if ($this->is_edit_mode()) { $this->add_render_attribute('link', [ 'class' => 'elementor-clickable', ]); } } ?> <?php if ($link) : ?> <a <?php $this->print_render_attribute_string('link'); ?>> <?php endif; ?> <?php Group_Control_Image_Size::print_attachment_image_html($settings); ?> <?php if ($link) : ?> </a> <?php endif; ?> <?php } protected function get_link_url($settings) { if ('none' === $settings['link_to']) { return false; } if ('custom' === $settings['link_to']) { if (empty($settings['link']['url'])) { return false; } return $settings['link']; } return [ 'url' => get_permalink(get_the_ID()), ]; } } \Elementor\Plugin::instance()->widgets_manager->register(new Featured_Image());
| ver. 1.1 | |
.
| PHP 8.4.20 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка