PluginProbe
Elementor Website Builder – more than just a page builder / 3.11.2
Elementor Website Builder – more than just a page builder v3.11.2
4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 All 452 releases
← All changes | includes/widgets/video.php +69 -232 4.2.43.11.2 View file →
@@ -1,9 +1,8 @@
1 1 <?php
2 2 namespace Elementor;
3 3
4 4 use Elementor\Modules\DynamicTags\Module as TagsModule;
5 -use Elementor\Modules\Promotions\Controls\Promotion_Control;
6 5
7 6 if ( ! defined( 'ABSPATH' ) ) {
8 7 exit; // Exit if accessed directly.
9 8 }
@@ -85,60 +84,16 @@
85 84 *
86 85 * @return array Widget keywords.
87 86 */
88 87 public function get_keywords() {
89 - return [ 'video', 'player', 'embed', 'youtube', 'vimeo', 'dailymotion', 'videopress' ];
88 + return [ 'video', 'player', 'embed', 'youtube', 'vimeo', 'dailymotion' ];
90 89 }
91 90
92 - protected function is_dynamic_content(): bool {
93 - return false;
94 - }
95 -
96 91 /**
97 - * Get style dependencies.
98 - *
99 - * Retrieve the list of style dependencies the widget requires.
100 - *
101 - * @since 3.24.0
102 - * @access public
103 - *
104 - * @return array Widget style dependencies.
105 - */
106 - public function get_style_depends(): array {
107 - return [ 'widget-video' ];
108 - }
109 -
110 - public function has_widget_inner_wrapper(): bool {
111 - return ! Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' );
112 - }
113 -
114 - /**
115 92 * Register video widget controls.
116 93 *
117 94 * Adds different input fields to allow the user to change and customize the widget settings.
118 95 *
119 - * @since 3.19.0
120 - * @access protected
121 - *
122 - * @return array Widget promotion data.
123 - */
124 - protected function get_upsale_data() {
125 - return [
126 - 'condition' => ! Utils::has_pro(),
127 - 'image' => esc_url( ELEMENTOR_ASSETS_URL . 'images/go-pro.svg' ),
128 - 'image_alt' => esc_attr__( 'Upgrade', 'elementor' ),
129 - 'title' => esc_html__( "Grab your visitors' attention", 'elementor' ),
130 - 'description' => esc_html__( 'Get the Video Playlist widget and grow your toolbox with Elementor Pro.', 'elementor' ),
131 - 'upgrade_url' => esc_url( 'https://go.elementor.com/go-pro-video-widget/' ),
132 - 'upgrade_text' => esc_html__( 'Upgrade Now', 'elementor' ),
133 - ];
134 - }
135 -
136 - /**
137 - * Register video widget controls.
138 - *
139 - * Adds different input fields to allow the user to change and customize the widget settings.
140 - *
141 96 * @since 3.1.0
142 97 * @access protected
143 98 */
144 99 protected function register_controls() {
@@ -158,9 +113,8 @@
158 113 'options' => [
159 114 'youtube' => esc_html__( 'YouTube', 'elementor' ),
160 115 'vimeo' => esc_html__( 'Vimeo', 'elementor' ),
161 116 'dailymotion' => esc_html__( 'Dailymotion', 'elementor' ),
162 - 'videopress' => esc_html__( 'VideoPress', 'elementor' ),
163 117 'hosted' => esc_html__( 'Self Hosted', 'elementor' ),
164 118 ],
165 119 'frontend_available' => true,
166 120 ]
@@ -183,11 +137,8 @@
183 137 'label_block' => true,
184 138 'condition' => [
185 139 'video_type' => 'youtube',
186 140 ],
187 - 'ai' => [
188 - 'active' => false,
189 - ],
190 141 'frontend_available' => true,
191 142 ]
192 143 );
193 144
@@ -208,11 +159,8 @@
208 159 'label_block' => true,
209 160 'condition' => [
210 161 'video_type' => 'vimeo',
211 162 ],
212 - 'ai' => [
213 - 'active' => false,
214 - ],
215 163 ]
216 164 );
217 165
218 166 $this->add_control(
@@ -232,11 +180,8 @@
232 180 'label_block' => true,
233 181 'condition' => [
234 182 'video_type' => 'dailymotion',
235 183 ],
236 - 'ai' => [
237 - 'active' => false,
238 - ],
239 184 ]
240 185 );
241 186
242 187 $this->add_control(
@@ -244,9 +189,9 @@
244 189 [
245 190 'label' => esc_html__( 'External URL', 'elementor' ),
246 191 'type' => Controls_Manager::SWITCHER,
247 192 'condition' => [
248 - 'video_type' => [ 'hosted', 'videopress' ],
193 + 'video_type' => 'hosted',
249 194 ],
250 195 ]
251 196 );
252 197
@@ -252,9 +197,9 @@
252 197
253 198 $this->add_control(
254 199 'hosted_url',
255 200 [
256 - 'label' => esc_html__( 'Choose Video File', 'elementor' ),
201 + 'label' => esc_html__( 'Choose File', 'elementor' ),
257 202 'type' => Controls_Manager::MEDIA,
258 203 'dynamic' => [
259 204 'active' => true,
260 205 'categories' => [
@@ -260,13 +205,11 @@
260 205 'categories' => [
261 206 TagsModule::MEDIA_CATEGORY,
262 207 ],
263 208 ],
264 - 'media_types' => [
265 - 'video',
266 - ],
209 + 'media_type' => 'video',
267 210 'condition' => [
268 - 'video_type' => [ 'hosted', 'videopress' ],
211 + 'video_type' => 'hosted',
269 212 'insert_url' => '',
270 213 ],
271 214 ]
272 215 );
@@ -286,8 +229,9 @@
286 229 TagsModule::POST_META_CATEGORY,
287 230 TagsModule::URL_CATEGORY,
288 231 ],
289 232 ],
233 + 'media_type' => 'video',
290 234 'placeholder' => esc_html__( 'Enter your URL', 'elementor' ),
291 235 'condition' => [
292 236 'video_type' => 'hosted',
293 237 'insert_url' => 'yes',
@@ -295,35 +239,8 @@
295 239 ]
296 240 );
297 241
298 242 $this->add_control(
299 - 'videopress_url',
300 - [
301 - 'label' => esc_html__( 'URL', 'elementor' ),
302 - 'type' => Controls_Manager::TEXT,
303 - 'label_block' => true,
304 - 'show_label' => false,
305 - 'default' => 'https://videopress.com/v/ZCAOzTNk',
306 - 'dynamic' => [
307 - 'active' => true,
308 - 'categories' => [
309 - TagsModule::POST_META_CATEGORY,
310 - TagsModule::URL_CATEGORY,
311 - ],
312 - ],
313 - 'placeholder' => esc_html__( 'VideoPress URL', 'elementor' ),
314 - 'ai' => [
315 - 'active' => false,
316 - ],
317 - 'condition' => [
318 - 'video_type' => 'videopress',
319 - 'insert_url' => 'yes',
320 - ],
321 -
322 - ]
323 - );
324 -
325 - $this->add_control(
326 243 'start',
327 244 [
328 245 'label' => esc_html__( 'Start Time', 'elementor' ),
329 246 'type' => Controls_Manager::NUMBER,
@@ -328,9 +245,8 @@
328 245 'label' => esc_html__( 'Start Time', 'elementor' ),
329 246 'type' => Controls_Manager::NUMBER,
330 247 'description' => esc_html__( 'Specify a start time (in seconds)', 'elementor' ),
331 248 'frontend_available' => true,
332 - 'separator' => 'before',
333 249 ]
334 250 );
335 251
336 252 $this->add_control(
@@ -358,16 +274,23 @@
358 274 $this->add_control(
359 275 'autoplay',
360 276 [
361 277 'label' => esc_html__( 'Autoplay', 'elementor' ),
362 - 'description' => sprintf(
363 - /* translators: 1: `<a>` opening tag, 2: `</a>` closing tag. */
364 - esc_html__( 'Note: Autoplay is affected by %1$s Google’s Autoplay policy %2$s on Chrome browsers.', 'elementor' ),
365 - '<a href="https://developers.google.com/web/updates/2017/09/autoplay-policy-changes" target="_blank">',
366 - '</a>'
367 - ),
368 278 'type' => Controls_Manager::SWITCHER,
369 279 'frontend_available' => true,
280 + 'conditions' => [
281 + 'relation' => 'or',
282 + 'terms' => [
283 + [
284 + 'name' => 'show_image_overlay',
285 + 'value' => '',
286 + ],
287 + [
288 + 'name' => 'image_overlay[url]',
289 + 'value' => '',
290 + ],
291 + ],
292 + ],
370 293 ]
371 294 );
372 295
373 296 $this->add_control(
@@ -432,11 +355,11 @@
432 355 ]
433 356 );
434 357
435 358 $this->add_control(
436 - 'cc_load_policy',
359 + 'modestbranding',
437 360 [
438 - 'label' => esc_html__( 'Captions', 'elementor' ),
361 + 'label' => esc_html__( 'Modest Branding', 'elementor' ),
439 362 'type' => Controls_Manager::SWITCHER,
440 363 'condition' => [
441 364 'video_type' => [ 'youtube' ],
442 365 'controls' => 'yes',
@@ -600,11 +523,11 @@
600 523 'auto' => esc_html__( 'Auto', 'elementor' ),
601 524 'none' => esc_html__( 'None', 'elementor' ),
602 525 ],
603 526 'description' => sprintf(
604 - '%1$s <a target="_blank" href="https://go.elementor.com/preload-video/">%2$s</a>',
605 - esc_html__( 'Preload attribute lets you specify how the video should be loaded when the page loads.', 'elementor' ),
606 - esc_html__( 'Learn more', 'elementor' ),
527 + esc_html__( 'Preload attribute lets you specify how the video should be loaded when the page loads. %1$sLearn More%2$s', 'elementor' ),
528 + '<a target="_blank" href="https://go.elementor.com/preload-video/">',
529 + '</a>'
607 530 ),
608 531 'default' => 'metadata',
609 532 'condition' => [
610 533 'video_type' => 'hosted',
@@ -626,8 +549,17 @@
626 549 ],
627 550 ]
628 551 );
629 552
553 + $this->add_control(
554 + 'view',
555 + [
556 + 'label' => esc_html__( 'View', 'elementor' ),
557 + 'type' => Controls_Manager::HIDDEN,
558 + 'default' => 'youtube',
559 + ]
560 + );
561 +
630 562 $this->end_controls_section();
631 563
632 564 $this->start_controls_section(
633 565 'section_image_overlay',
@@ -669,8 +601,9 @@
669 601 Group_Control_Image_Size::get_type(),
670 602 [
671 603 'name' => 'image_overlay', // Usage: `{name}_size` and `{name}_custom_dimension`, in this case `image_overlay_size` and `image_overlay_custom_dimension`.
672 604 'default' => 'full',
605 + 'separator' => 'none',
673 606 'condition' => [
674 607 'show_image_overlay' => 'yes',
675 608 ],
676 609 ]
@@ -681,11 +614,8 @@
681 614 [
682 615 'label' => esc_html__( 'Play Icon', 'elementor' ),
683 616 'type' => Controls_Manager::SWITCHER,
684 617 'default' => 'yes',
685 - 'label_off' => esc_html__( 'Hide', 'elementor' ),
686 - 'label_on' => esc_html__( 'Show', 'elementor' ),
687 - 'separator' => 'before',
688 618 'condition' => [
689 619 'show_image_overlay' => 'yes',
690 620 'image_overlay[url]!' => '',
691 621 ],
@@ -766,18 +696,18 @@
766 696 '11' => '1:1',
767 697 '916' => '9:16',
768 698 ],
769 699 'selectors_dictionary' => [
770 - '169' => '1.77777', // 16 / 9
771 - '219' => '2.33333', // 21 / 9
772 - '43' => '1.33333', // 4 / 3
773 - '32' => '1.5', // 3 / 2
774 - '11' => '1', // 1 / 1
775 - '916' => '0.5625', // 9 / 16
700 + '169' => '16 / 9',
701 + '219' => '21 / 9',
702 + '43' => '4 / 3',
703 + '32' => '3 / 2',
704 + '11' => '1 / 1',
705 + '916' => '9 / 16',
776 706 ],
777 707 'default' => '169',
778 708 'selectors' => [
779 - '{{WRAPPER}} .elementor-wrapper' => '--video-aspect-ratio: {{VALUE}}',
709 + '{{WRAPPER}} .elementor-wrapper' => 'aspect-ratio: {{VALUE}}',
780 710 ],
781 711 ]
782 712 );
783 713
@@ -788,22 +718,8 @@
788 718 'selector' => '{{WRAPPER}} .elementor-wrapper',
789 719 ]
790 720 );
791 721
792 - $this->end_controls_section();
793 -
794 - $this->start_controls_section(
795 - 'section_image_overlay_style',
796 - [
797 - 'label' => esc_html__( 'Image Overlay', 'elementor' ),
798 - 'tab' => Controls_Manager::TAB_STYLE,
799 - 'condition' => [
800 - 'show_image_overlay' => 'yes',
801 - 'show_play_icon' => 'yes',
802 - ],
803 - ]
804 - );
805 -
806 722 $this->add_control(
807 723 'play_icon_title',
808 724 [
809 725 'label' => esc_html__( 'Play Icon', 'elementor' ),
@@ -811,8 +727,9 @@
811 727 'condition' => [
812 728 'show_image_overlay' => 'yes',
813 729 'show_play_icon' => 'yes',
814 730 ],
731 + 'separator' => 'before',
815 732 ]
816 733 );
817 734
818 735 $this->add_control(
@@ -835,9 +752,8 @@
835 752 'play_icon_size',
836 753 [
837 754 'label' => esc_html__( 'Size', 'elementor' ),
838 755 'type' => Controls_Manager::SLIDER,
839 - 'size_units' => [ 'px', 'em', 'rem', 'custom' ],
840 756 'range' => [
841 757 'px' => [
842 758 'min' => 10,
843 759 'max' => 300,
@@ -861,9 +777,9 @@
861 777 'name' => 'play_icon_text_shadow',
862 778 'selector' => '{{WRAPPER}} .elementor-custom-embed-play i',
863 779 'fields_options' => [
864 780 'text_shadow_type' => [
865 - 'label' => esc_html__( 'Shadow', 'elementor' ),
781 + 'label' => esc_html_x( 'Shadow', 'Text Shadow Control', 'elementor' ),
866 782 ],
867 783 ],
868 784 'condition' => [
869 785 'show_image_overlay' => 'yes',
@@ -919,56 +835,31 @@
919 835 'selectors' => [
920 836 '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button:hover' => 'color: {{VALUE}}',
921 837 '#elementor-lightbox-{{ID}} .dialog-lightbox-close-button:hover svg' => 'fill: {{VALUE}}',
922 838 ],
839 + 'separator' => 'after',
923 840 ]
924 841 );
925 842
926 - $this->add_responsive_control(
927 - 'lightbox_content_animation',
928 - [
929 - 'label' => esc_html__( 'Entrance Animation', 'elementor' ),
930 - 'type' => Controls_Manager::ANIMATION,
931 - 'frontend_available' => true,
932 - 'separator' => 'before',
933 - ]
934 - );
935 -
936 843 $this->add_control(
937 - 'deprecation_warning',
938 - [
939 - 'type' => Controls_Manager::ALERT,
940 - 'alert_type' => 'danger',
941 - 'content' => esc_html__( 'Note: These controls have been deprecated and are only visible if they were previously in use. The video’s width and position are now set based on its aspect ratio.', 'elementor' ),
942 - 'separator' => 'before',
943 - 'condition' => [
944 - 'lightbox_video_width!' => '',
945 - 'lightbox_content_position!' => '',
946 - ],
947 - ]
948 - );
949 -
950 - // Deprecated control. Visible only if it was previously in use.
951 - $this->add_control(
952 844 'lightbox_video_width',
953 845 [
954 846 'label' => esc_html__( 'Content Width', 'elementor' ),
955 847 'type' => Controls_Manager::SLIDER,
956 - 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ],
957 848 'default' => [
958 849 'unit' => '%',
959 850 ],
960 - // 'selectors' => [
961 - // '(desktop+)#elementor-lightbox-{{ID}} .elementor-video-container' => 'width: {{SIZE}}{{UNIT}};',
962 - // ],
963 - 'condition' => [
964 - 'lightbox_video_width!' => '',
965 - 'lightbox_content_position!' => '',
851 + 'range' => [
852 + '%' => [
853 + 'min' => 30,
854 + ],
966 855 ],
856 + 'selectors' => [
857 + '(desktop+)#elementor-lightbox-{{ID}} .elementor-video-container' => 'width: {{SIZE}}{{UNIT}};',
858 + ],
967 859 ]
968 860 );
969 861
970 - // Deprecated control. Visible only if it was previously in use.
971 862 $this->add_control(
972 863 'lightbox_content_position',
973 864 [
974 865 'label' => esc_html__( 'Content Position', 'elementor' ),
@@ -977,21 +868,26 @@
977 868 'options' => [
978 869 '' => esc_html__( 'Center', 'elementor' ),
979 870 'top' => esc_html__( 'Top', 'elementor' ),
980 871 ],
981 - // 'selectors' => [
982 - // '#elementor-lightbox-{{ID}} .elementor-video-container' => '{{VALUE}}; transform: translateX(-50%);',
983 - // ],
872 + 'selectors' => [
873 + '#elementor-lightbox-{{ID}} .elementor-video-container' => '{{VALUE}}; transform: translateX(-50%);',
874 + ],
984 875 'selectors_dictionary' => [
985 876 'top' => 'top: 60px',
986 877 ],
987 - 'condition' => [
988 - 'lightbox_video_width!' => '',
989 - 'lightbox_content_position!' => '',
990 - ],
991 878 ]
992 879 );
993 880
881 + $this->add_responsive_control(
882 + 'lightbox_content_animation',
883 + [
884 + 'label' => esc_html__( 'Entrance Animation', 'elementor' ),
885 + 'type' => Controls_Manager::ANIMATION,
886 + 'frontend_available' => true,
887 + ]
888 + );
889 +
994 890 $this->end_controls_section();
995 891 }
996 892
997 893 public function print_a11y_text( $image_overlay ) {
@@ -1017,12 +913,8 @@
1017 913
1018 914 if ( 'hosted' === $settings['video_type'] ) {
1019 915 $video_url = $this->get_hosted_video_url();
1020 916 } else {
1021 - if ( 'videopress' === $settings['video_type'] ) {
1022 - $video_url = $this->get_videopress_video_url();
1023 - }
1024 -
1025 917 $embed_params = $this->get_embed_params();
1026 918 $embed_options = $this->get_embed_options();
1027 919 }
1028 920
@@ -1048,9 +940,9 @@
1048 940
1049 941 if ( $is_static_render_mode ) {
1050 942 $video_html = Embed::get_embed_thumbnail_html( $video_url, $post_id );
1051 943 // YouTube API requires a different markup which was set above.
1052 - } elseif ( 'youtube' !== $settings['video_type'] ) {
944 + } else if ( 'youtube' !== $settings['video_type'] ) {
1053 945 $video_html = Embed::get_embed_html( $video_url, $embed_params, $embed_options );
1054 946 }
1055 947 }
1056 948
@@ -1083,15 +975,14 @@
1083 975 $lightbox_options = [
1084 976 'type' => 'video',
1085 977 'videoType' => $settings['video_type'],
1086 978 'url' => $lightbox_url,
1087 - 'autoplay' => $settings['autoplay'],
1088 979 'modalOptions' => [
1089 980 'id' => 'elementor-lightbox-' . $this->get_id(),
1090 981 'entranceAnimation' => $settings['lightbox_content_animation'],
1091 982 'entranceAnimation_tablet' => $settings['lightbox_content_animation_tablet'],
1092 983 'entranceAnimation_mobile' => $settings['lightbox_content_animation_mobile'],
1093 - 'videoAspectRatio' => $settings['aspect_ratio'] ?? '169',
984 + 'videoAspectRatio' => $settings['aspect_ratio'],
1094 985 ],
1095 986 ];
1096 987
1097 988 if ( 'hosted' === $settings['video_type'] ) {
@@ -1134,8 +1025,9 @@
1134 1025 ];
1135 1026 }
1136 1027 Icons_Manager::render_icon( $settings['play_icon'], [ 'aria-hidden' => 'true' ] );
1137 1028 ?>
1029 + <span class="elementor-screen-only"><?php $this->print_a11y_text( $settings['image_overlay'] ); ?></span>
1138 1030 </div>
1139 1031 <?php endif; ?>
1140 1032 </div>
1141 1033 <?php } ?>
@@ -1145,9 +1037,9 @@
1145 1037
1146 1038 /**
1147 1039 * Render video widget as plain content.
1148 1040 *
1149 - * Override the default behavior, by printing the video URL instead of rendering it.
1041 + * Override the default behavior, by printing the video URL insted of rendering it.
1150 1042 *
1151 1043 * @since 1.4.5
1152 1044 * @access public
1153 1045 */
@@ -1193,9 +1085,9 @@
1193 1085 'loop',
1194 1086 'controls',
1195 1087 'mute',
1196 1088 'rel',
1197 - 'cc_load_policy',
1089 + 'modestbranding',
1198 1090 ];
1199 1091
1200 1092 if ( $settings['loop'] ) {
1201 1093 $video_properties = Embed::get_video_properties( $settings['youtube_url'] );
@@ -1236,12 +1128,8 @@
1236 1128
1237 1129 $params['start'] = $settings['start'];
1238 1130
1239 1131 $params['endscreen-enable'] = '0';
1240 - } elseif ( 'videopress' === $settings['video_type'] ) {
1241 - $params_dictionary = $this->get_params_dictionary_for_videopress();
1242 -
1243 - $params['at'] = $settings['start'];
1244 1132 }
1245 1133
1246 1134 foreach ( $params_dictionary as $key => $param_name ) {
1247 1135 $setting_name = $param_name;
@@ -1332,8 +1220,9 @@
1332 1220 return $video_params;
1333 1221 }
1334 1222
1335 1223 /**
1224 + * @param bool $from_media
1336 1225 *
1337 1226 * @return string
1338 1227 * @since 2.1.0
1339 1228 * @access private
@@ -1366,39 +1255,9 @@
1366 1255 return $video_url;
1367 1256 }
1368 1257
1369 1258 /**
1370 - * Get the VideoPress video URL from the current selected settings.
1371 1259 *
1372 - * @return string
1373 - */
1374 - private function get_videopress_video_url() {
1375 - $settings = $this->get_settings_for_display();
1376 -
1377 - if ( ! empty( $settings['insert_url'] ) ) {
1378 - return $settings['videopress_url'];
1379 - }
1380 -
1381 - return $settings['hosted_url']['url'];
1382 - }
1383 -
1384 - /**
1385 - * Get the params dictionary for VideoPress videos.
1386 - *
1387 - * @return array
1388 - */
1389 - private function get_params_dictionary_for_videopress() {
1390 - return [
1391 - 'controls',
1392 - 'autoplay' => 'autoPlay',
1393 - 'mute' => 'muted',
1394 - 'loop',
1395 - 'play_on_mobile' => 'playsinline',
1396 - ];
1397 - }
1398 -
1399 - /**
1400 - *
1401 1260 * @since 2.1.0
1402 1261 * @access private
1403 1262 */
1404 1263 private function render_hosted_video() {
@@ -1411,28 +1270,6 @@
1411 1270 /* Sometimes the video url is base64, therefore we use `esc_attr` in `src`. */
1412 1271 ?>
1413 1272 <video class="elementor-video" src="<?php echo esc_attr( $video_url ); ?>" <?php Utils::print_html_attributes( $video_params ); ?>></video>
1414 1273 <?php
1415 - }
1416 -
1417 - public function render_markdown(): string {
1418 - $settings = $this->get_settings_for_display();
1419 - $video_type = $settings['video_type'] ?? 'youtube';
1420 - $url = '';
1421 -
1422 - if ( 'hosted' === $video_type ) {
1423 - if ( ! empty( $settings['insert_url'] ) ) {
1424 - $url = $settings['external_url']['url'] ?? '';
1425 - } else {
1426 - $url = $settings['hosted_url']['url'] ?? '';
1427 - }
1428 - } else {
1429 - $url = $settings[ $video_type . '_url' ] ?? '';
1430 - }
1431 -
1432 - if ( empty( $url ) ) {
1433 - return '';
1434 - }
1435 -
1436 - return '[Video](' . esc_url( $url ) . ')';
1437 1274 }
1438 1275 }