PluginProbe
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder / 51.1.83
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder v51.1.83
51.1.84 51.1.85 51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 51.1.46 All 39 releases
← All changes | includes/features/Wrapper_Link/Wrapper_Link.php +30 -2 51.1.3551.1.83 View file →
@@ -67,8 +67,22 @@
67 67
68 68 $element->end_controls_section();
69 69 }
70 70
71 + /**
72 + * Loads the click handler, and only for pages that actually use the feature.
73 + *
74 + * @return void
75 + */
76 + private static function enqueueScript(): void
77 + {
78 + $handle = KING_ADDONS_ASSETS_UNIQUE_KEY . '-wrapper-link-wrapper-link';
79 +
80 + if (!wp_script_is($handle, 'enqueued')) {
81 + wp_enqueue_script($handle);
82 + }
83 + }
84 +
71 85 public static function renderLink(Element_Base $element): void
72 86 {
73 87 if (!empty($element->get_settings_for_display('kng_wrapper_link_switch'))) {
74 88
@@ -75,17 +89,31 @@
75 89 $wrapper_link_settings = $element->get_settings_for_display('kng_wrapper_link');
76 90
77 91 if (!empty($wrapper_link_settings['url'])) {
78 92
79 - $link_target = ($wrapper_link_settings['is_external']) ? '_blank' : '_self';
93 + $url = esc_url_raw($wrapper_link_settings['url']);
94 + if (empty($url)) {
95 + return;
96 + }
80 97
98 + $link_target = (!empty($wrapper_link_settings['is_external'])) ? '_blank' : '_self';
99 +
100 + /**
101 + * The URL travels in a data attribute and the click is handled by
102 + * wrapper-link.js. An inline onclick fired on every click that
103 + * bubbled up, so a link inside the container navigated twice —
104 + * once itself and once through the wrapper.
105 + */
81 106 $element->add_render_attribute(
82 107 '_wrapper',
83 108 [
84 109 'style' => 'cursor: pointer;',
85 - 'onclick' => "window.open('" . esc_url($wrapper_link_settings['url']) . "', '" . esc_attr($link_target) . "');"
110 + 'data-kng-wrapper-link' => $url,
111 + 'data-kng-wrapper-link-target' => $link_target,
86 112 ]
87 113 );
114 +
115 + self::enqueueScript();
88 116 }
89 117 }
90 118 }
91 119 }