start_controls_section( 'content_section', [ 'label' => esc_html__('Social Share Settings', 'easy-elements'), 'tab' => Controls_Manager::TAB_CONTENT, ] ); $this->add_control( 'social_platforms', [ 'label' => esc_html__('Social Platforms', 'easy-elements'), 'type' => Controls_Manager::REPEATER, 'fields' => [ [ 'name' => 'platform', 'label' => esc_html__('Platform', 'easy-elements'), 'type' => Controls_Manager::SELECT, 'default' => 'facebook', 'options' => [ 'facebook' => esc_html__('Facebook', 'easy-elements'), 'twitter' => esc_html__('Twitter/X', 'easy-elements'), 'instagram' => esc_html__('Instagram', 'easy-elements'), 'linkedin' => esc_html__('LinkedIn', 'easy-elements'), 'youtube' => esc_html__('YouTube', 'easy-elements'), 'tiktok' => esc_html__('TikTok', 'easy-elements'), 'pinterest' => esc_html__('Pinterest', 'easy-elements'), 'whatsapp' => esc_html__('WhatsApp', 'easy-elements'), 'telegram' => esc_html__('Telegram', 'easy-elements'), 'snapchat' => esc_html__('Snapchat', 'easy-elements'), 'reddit' => esc_html__('Reddit', 'easy-elements'), 'discord' => esc_html__('Discord', 'easy-elements'), 'spotify' => esc_html__('Spotify', 'easy-elements'), 'email' => esc_html__('Email', 'easy-elements'), 'copy' => esc_html__('Copy Link', 'easy-elements'), ], ], [ 'name' => 'custom_icon', 'label' => esc_html__('Custom Icon', 'easy-elements'), 'type' => Controls_Manager::ICONS, 'default' => [ 'value' => '', 'library' => '', ], ], ], 'default' => [ [ 'platform' => 'facebook', ], [ 'platform' => 'twitter', ], [ 'platform' => 'instagram', ], [ 'platform' => 'linkedin', ], [ 'platform' => 'youtube', ], [ 'platform' => 'whatsapp', ], [ 'platform' => 'telegram', ], [ 'platform' => 'copy', ], ], 'title_field' => '{{{ platform }}}', ] ); $this->add_control( 'layout', [ 'label' => esc_html__('Layout', 'easy-elements'), 'type' => Controls_Manager::SELECT, 'default' => 'horizontal', 'options' => [ 'horizontal' => esc_html__('Horizontal', 'easy-elements'), 'vertical' => esc_html__('Vertical', 'easy-elements'), 'grid' => esc_html__('Grid', 'easy-elements'), ], ] ); $this->add_control( 'open_new_tab', [ 'label' => esc_html__('Open in New Tab', 'easy-elements'), 'type' => Controls_Manager::SWITCHER, 'label_on' => esc_html__('Yes', 'easy-elements'), 'label_off' => esc_html__('No', 'easy-elements'), 'return_value' => 'yes', 'default' => 'yes', ] ); $this->end_controls_section(); // Style Tab - Buttons $this->start_controls_section( 'buttons_style_section', [ 'label' => esc_html__('Buttons Style', 'easy-elements'), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_control( 'icon_size', [ 'label' => esc_html__('Icon Size', 'easy-elements'), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', 'em'], 'range' => [ 'px' => [ 'min' => 10, 'max' => 50, 'step' => 1, ], 'em' => [ 'min' => 0.5, 'max' => 3, 'step' => 0.1, ], ], 'default' => [ 'unit' => 'px', 'size' => 18, ], 'selectors' => [ '{{WRAPPER}} .eel-social-button i' => 'font-size: {{SIZE}}{{UNIT}};', '{{WRAPPER}} .eel-social-button svg' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};', ], ] ); $this->add_group_control( \Elementor\Group_Control_Background::get_type(), [ 'name' => 'icon__bg', 'label' => esc_html__( 'Background', 'easy-elements' ), 'types' => [ 'classic', 'gradient' ], 'selector' => '{{WRAPPER}} .eel-social-share .eel-social-button', 'separator' => 'before', ] ); $this->add_control( 'icon_color_cutom', [ 'label' => esc_html__('Color', 'easy-elements'), 'type' => Controls_Manager::COLOR, 'default' => '', 'selectors' => [ '{{WRAPPER}} .eel-social-share .eel-social-button i' => 'color: {{VALUE}};', '{{WRAPPER}} .eel-social-share .eel-social-button svg' => 'fill: {{VALUE}};', '{{WRAPPER}} .eel-social-share .eel-social-button svg path' => 'fill: {{VALUE}};', ], ] ); $this->add_responsive_control( 'button_size', [ 'label' => esc_html__('Button Size', 'easy-elements'), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', 'em'], 'range' => [ 'px' => [ 'min' => 30, 'max' => 100, 'step' => 1, ], 'em' => [ 'min' => 2, 'max' => 6, 'step' => 0.1, ], ], 'default' => [ 'unit' => 'px', 'size' => 45, ], 'selectors' => [ '{{WRAPPER}} .eel-social-button' => 'width: {{SIZE}}{{UNIT}}; height: {{SIZE}}{{UNIT}};', ], ] ); $this->add_responsive_control( 'button_spacing', [ 'label' => esc_html__('Button Spacing', 'easy-elements'), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', 'em'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 50, 'step' => 1, ], 'em' => [ 'min' => 0, 'max' => 3, 'step' => 0.1, ], ], 'default' => [ 'unit' => 'px', 'size' => 0, ], 'selectors' => [ '{{WRAPPER}} .eel-social-button' => 'margin: 0 {{SIZE}}{{UNIT}};', '{{WRAPPER}} .eel-social-button:first-child' => 'margin-left: 0;', '{{WRAPPER}} .eel-social-button:last-child' => 'margin-right: 0;', ], ] ); $this->add_control( 'button_border_radius', [ 'label' => esc_html__('Border Radius', 'easy-elements'), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => ['px', '%'], 'default' => [ 'top' => '50', 'right' => '50', 'bottom' => '50', 'left' => '50', 'unit' => '%', 'isLinked' => true, ], 'selectors' => [ '{{WRAPPER}} .eel-social-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'button_border', 'selector' => '{{WRAPPER}} .eel-social-button', ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'button_box_shadow', 'selector' => '{{WRAPPER}} .eel-social-button', ] ); $this->end_controls_section(); } protected function render() { $settings = $this->get_settings_for_display(); if (empty($settings['social_platforms'])) { return; } $current_url = get_permalink(); $current_title = get_the_title(); $current_description = get_the_excerpt() ?: get_bloginfo('description'); // Get featured image if available $featured_image = ''; if (has_post_thumbnail()) { $featured_image = get_the_post_thumbnail_url(get_the_ID(), 'full'); } $layout_class = 'eel-social-layout-' . ($settings['layout'] ?? 'horizontal'); $target = ($settings['open_new_tab'] === 'yes') ? '_blank' : '_self'; // Add Open Graph meta tags for better social sharing if (!empty($featured_image)) { echo ''; echo ''; echo ''; echo ''; echo ''; } echo ''; echo ''; echo ''; echo ''; echo ''; ?>
'); $('body').append(tempInput); tempInput.val(url).select(); document.execCommand('copy'); tempInput.remove(); var button = $(this); var originalIcon = button.find('i, svg').clone(); button.find('i, svg').remove(); button.append(''); button.addClass('eel-copied'); setTimeout(function() { button.find('i').remove(); button.append(originalIcon); button.removeClass('eel-copied'); }, 2000); }); }); "; wp_add_inline_script( 'eel-copy-link', $inline_js ); } private function get_social_share_url($platform, $url, $title, $description, $image = '') { $encoded_url = urlencode($url); $encoded_title = urlencode($title); $encoded_description = urlencode($description); $encoded_image = urlencode($image); switch ($platform) { case 'facebook': return "https://www.facebook.com/sharer/sharer.php?u={$encoded_url}"; case 'twitter': return "https://twitter.com/intent/tweet?url={$encoded_url}&text={$encoded_title}"; case 'linkedin': return "https://www.linkedin.com/sharing/share-offsite/?url={$encoded_url}"; case 'pinterest': if (!empty($image)) { return "https://pinterest.com/pin/create/button/?url={$encoded_url}&description={$encoded_title}&media={$encoded_image}"; } else { return "https://pinterest.com/pin/create/button/?url={$encoded_url}&description={$encoded_title}"; } case 'whatsapp': return "https://api.whatsapp.com/send?text={$encoded_title}%20{$encoded_url}"; case 'telegram': return "https://t.me/share/url?url={$encoded_url}&text={$encoded_title}"; case 'instagram': return "https://www.instagram.com/"; case 'youtube': return "https://www.youtube.com/"; case 'tiktok': return "https://www.tiktok.com/"; case 'snapchat': return "https://www.snapchat.com/"; case 'reddit': return "https://www.reddit.com/submit?url={$encoded_url}&title={$encoded_title}"; case 'discord': return "https://discord.com/"; case 'spotify': return "https://open.spotify.com/"; case 'email': return "mailto:?subject={$encoded_title}&body={$encoded_description}%20{$encoded_url}"; default: return $url; } } private function get_social_icon_class($platform) { switch ($platform) { case 'facebook': return 'fab fa-facebook-f'; case 'twitter': return 'fab fa-twitter'; case 'linkedin': return 'fab fa-linkedin-in'; case 'pinterest': return 'fab fa-pinterest-p'; case 'whatsapp': return 'fab fa-whatsapp'; case 'telegram': return 'fab fa-telegram-plane'; case 'instagram': return 'fab fa-instagram'; case 'youtube': return 'fab fa-youtube'; case 'tiktok': return 'fab fa-tiktok'; case 'snapchat': return 'fab fa-snapchat-ghost'; case 'reddit': return 'fab fa-reddit-alien'; case 'discord': return 'fab fa-discord'; case 'spotify': return 'fab fa-spotify'; case 'email': return 'fas fa-envelope'; case 'copy': return 'fas fa-link'; default: return 'fas fa-share'; } } }