PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.9-a.7
Jetpack – WP Security, Backup, Speed, & Growth v15.9-a.7
15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / shortcodes / ted.php
jetpack / modules / shortcodes Last commit date
css 2 weeks ago images 1 year ago img 4 weeks ago js 6 months ago archiveorg-book.php 6 months ago archiveorg.php 6 months ago archives.php 2 weeks ago bandcamp.php 6 months ago brightcove.php 5 months ago cartodb.php 6 months ago class.filter-embedded-html-objects.php 6 months ago codepen.php 6 months ago crowdsignal.php 5 months ago dailymotion.php 6 months ago descript.php 6 months ago facebook.php 6 months ago flatio.php 6 months ago flickr.php 5 months ago getty.php 6 months ago gist.php 6 months ago googleapps.php 6 months ago googlemaps.php 3 weeks ago googleplus.php 6 months ago gravatar.php 6 months ago houzz.php 6 months ago inline-pdfs.php 6 months ago instagram.php 6 months ago kickstarter.php 6 months ago mailchimp.php 5 months ago medium.php 6 months ago mixcloud.php 6 months ago others.php 6 months ago pinterest.php 6 months ago presentations.php 6 months ago quiz.php 6 months ago recipe.php 6 months ago scribd.php 6 months ago shortcode-utils.php 6 months ago sitemap.php 6 months ago slideshare.php 6 months ago slideshow.php 4 weeks ago smartframe.php 6 months ago soundcloud.php 6 months ago spotify.php 6 months ago ted.php 6 months ago tweet.php 6 months ago twitchtv.php 6 months ago twitter-timeline.php 6 months ago twitter.php 6 months ago unavailable.php 6 months ago untappd-menu.php 6 months ago upcoming-events.php 6 months ago ustream.php 6 months ago videopress.php 6 months ago vimeo.php 1 week ago vine.php 6 months ago vr.php 1 week ago wufoo.php 6 months ago youtube.php 3 months ago
ted.php
140 lines
1 <?php
2 /**
3 * TED Player embed code
4 * http://www.ted.com
5 *
6 * Examples:
7 * http://www.ted.com/talks/view/id/210
8 * http://www.ted.com/talks/marc_goodman_a_vision_of_crimes_in_the_future.html
9 * [ted id="210" lang="en"]
10 * [ted id="http://www.ted.com/talks/view/id/210" lang="en"]
11 * [ted id=1539 lang=fr width=560 height=315]
12 *
13 * @package automattic/jetpack
14 */
15
16 if ( ! defined( 'ABSPATH' ) ) {
17 exit( 0 );
18 }
19
20 wp_oembed_add_provider( '!https?://(www\.)?ted.com/talks/view/id/.+!i', 'https://www.ted.com/talks/oembed.json', true );
21 wp_oembed_add_provider( '!https?://(www\.)?ted.com/talks/[a-zA-Z\-\_]+\.html!i', 'https://www.ted.com/talks/oembed.json', true );
22
23 /**
24 * Get the unique ID of a TED video.
25 * Used in Jetpack_Media_Meta_Extractor.
26 *
27 * @param array $atts Shortcode attributes.
28 */
29 function jetpack_shortcode_get_ted_id( $atts ) {
30 return ( ! empty( $atts['id'] ) ? $atts['id'] : 0 );
31 }
32
33 /**
34 * Handle Ted Shortcode.
35 *
36 * @param array $atts Shortcode attributes.
37 */
38 function shortcode_ted( $atts ) {
39 global $wp_embed;
40
41 $defaults = array(
42 'id' => '',
43 'width' => '',
44 'height' => '',
45 'lang' => 'en',
46 );
47 $atts = shortcode_atts( $defaults, $atts, 'ted' );
48
49 if ( empty( $atts['id'] ) ) {
50 return '<!-- Missing TED ID -->';
51 }
52
53 $url = '';
54 if ( preg_match( '#^[\d]+$#', $atts['id'], $matches ) ) {
55 $url = 'https://ted.com/talks/view/id/' . $matches[0];
56 } elseif ( preg_match( '#^https?://(www\.)?ted\.com/talks/view/id/[0-9]+$#', $atts['id'], $matches ) ) {
57 $url = set_url_scheme( $matches[0], 'https' );
58 }
59
60 unset( $atts['id'] );
61
62 $args = array();
63 $embed_size_w = get_option( 'embed_size_w' );
64
65 if ( is_numeric( $atts['width'] ) ) {
66 $args['width'] = $atts['width'];
67 } elseif ( $embed_size_w ) {
68 $args['width'] = $embed_size_w;
69 } elseif ( ! empty( $GLOBALS['content_width'] ) ) {
70 $args['width'] = (int) $GLOBALS['content_width'];
71 } else {
72 $args['width'] = 500;
73 }
74
75 // Default to a 16x9 aspect ratio if there's no height set.
76 if ( is_numeric( $atts['height'] ) ) {
77 $args['height'] = $atts['height'];
78 } else {
79 $args['height'] = $args['width'] * 0.5625;
80 }
81
82 if ( ! empty( $atts['lang'] ) ) {
83 $args['lang'] = sanitize_key( $atts['lang'] );
84 add_filter( 'oembed_fetch_url', 'ted_filter_oembed_fetch_url', 10, 3 );
85 }
86 $retval = $wp_embed->shortcode( $args, $url );
87 remove_filter( 'oembed_fetch_url', 'ted_filter_oembed_fetch_url', 10 );
88
89 return $retval;
90 }
91 add_shortcode( 'ted', 'shortcode_ted' );
92
93 /**
94 * Filter the request URL to also include the $lang parameter
95 *
96 * @param string $provider URL of provider that supplies the tweet we're requesting.
97 * @param string $url URL of tweet to embed.
98 * @param array $args Parameters supplied to shortcode and passed to wp_oembed_get.
99 */
100 function ted_filter_oembed_fetch_url( $provider, $url, $args ) {
101 return add_query_arg( 'lang', $args['lang'], $provider );
102 }
103
104 /**
105 * Filter the oembed html to set the sandbox attribute in the iframe
106 *
107 * @param string|false $cache The cached HTML result, stored in post meta.
108 * @param string $url The attempted embed URL.
109 *
110 * @return string|false
111 */
112 function ted_filter_oembed_amp_iframe( $cache, $url ) {
113 if ( ! is_string( $cache ) ) {
114 return $cache;
115 }
116
117 $host = wp_parse_url( $url, PHP_URL_HOST );
118 if ( ! $host ) {
119 return $cache;
120 }
121
122 $allowed_hosts = array(
123 'ted.com',
124 'www.ted.com',
125 'embed.ted.com',
126 );
127
128 $host = strtolower( $host );
129 if ( in_array( $host, $allowed_hosts, true ) ) {
130 $cache = preg_replace(
131 '/src=[\'"].*?[\'"]/',
132 '$0 sandbox="allow-popups allow-scripts allow-same-origin"',
133 $cache
134 );
135 }
136
137 return $cache;
138 }
139 add_filter( 'embed_oembed_html', 'ted_filter_oembed_amp_iframe', 10, 2 );
140