diff --git a/wp-includes/class-oembed.php b/wp-includes/class-oembed.php index 8f63325561..ff0b8853bd 100644 --- a/wp-includes/class-oembed.php +++ b/wp-includes/class-oembed.php @@ -27,6 +27,59 @@ class WP_oEmbed { * @since 2.9.0 */ public function __construct() { + $providers = array( + '#http://(www\.)?youtube\.com/watch.*#i' => array( 'http://www.youtube.com/oembed', true ), + '#https://(www\.)?youtube\.com/watch.*#i' => array( 'http://www.youtube.com/oembed?scheme=https', true ), + '#http://(www\.)?youtube\.com/playlist.*#i' => array( 'http://www.youtube.com/oembed', true ), + '#https://(www\.)?youtube\.com/playlist.*#i' => array( 'http://www.youtube.com/oembed?scheme=https', true ), + '#http://youtu\.be/.*#i' => array( 'http://www.youtube.com/oembed', true ), + '#https://youtu\.be/.*#i' => array( 'http://www.youtube.com/oembed?scheme=https', true ), + 'http://blip.tv/*' => array( 'http://blip.tv/oembed/', false ), + '#https?://(.+\.)?vimeo\.com/.*#i' => array( 'http://vimeo.com/api/oembed.{format}', true ), + '#https?://(www\.)?dailymotion\.com/.*#i' => array( 'http://www.dailymotion.com/services/oembed', true ), + 'http://dai.ly/*' => array( 'http://www.dailymotion.com/services/oembed', false ), + '#https?://(www\.)?flickr\.com/.*#i' => array( 'https://www.flickr.com/services/oembed/', true ), + '#https?://flic\.kr/.*#i' => array( 'https://www.flickr.com/services/oembed/', true ), + '#https?://(.+\.)?smugmug\.com/.*#i' => array( 'http://api.smugmug.com/services/oembed/', true ), + '#https?://(www\.)?hulu\.com/watch/.*#i' => array( 'http://www.hulu.com/api/oembed.{format}', true ), + 'http://revision3.com/*' => array( 'http://revision3.com/api/oembed/', false ), + 'http://i*.photobucket.com/albums/*' => array( 'http://photobucket.com/oembed', false ), + 'http://gi*.photobucket.com/groups/*' => array( 'http://photobucket.com/oembed', false ), + '#https?://(www\.)?scribd\.com/doc/.*#i' => array( 'http://www.scribd.com/services/oembed', true ), + 'http://wordpress.tv/*' => array( 'http://wordpress.tv/oembed/', false ), + '#https?://(.+\.)?polldaddy\.com/.*#i' => array( 'http://polldaddy.com/oembed/', true ), + '#https?://poll\.fm/.*#i' => array( 'http://polldaddy.com/oembed/', true ), + '#https?://(www\.)?funnyordie\.com/videos/.*#i' => array( 'http://www.funnyordie.com/oembed', true ), + '#https?://(www\.)?twitter\.com/.+?/status(es)?/.*#i' => array( 'https://api.twitter.com/1/statuses/oembed.{format}', true ), + '#https?://(www\.)?soundcloud\.com/.*#i' => array( 'http://soundcloud.com/oembed', true ), + '#https?://(www\.)?slideshare\.net/.*#i' => array( 'https://www.slideshare.net/api/oembed/2', true ), + '#http://instagr(\.am|am\.com)/p/.*#i' => array( 'http://api.instagram.com/oembed', true ), + '#https?://(www\.)?rdio\.com/.*#i' => array( 'http://www.rdio.com/api/oembed/', true ), + '#https?://rd\.io/x/.*#i' => array( 'http://www.rdio.com/api/oembed/', true ), + '#https?://(open|play)\.spotify\.com/.*#i' => array( 'https://embed.spotify.com/oembed/', true ), + '#https?://(.+\.)?imgur\.com/.*#i' => array( 'http://api.imgur.com/oembed', true ), + '#https?://(www\.)?meetu(\.ps|p\.com)/.*#i' => array( 'http://api.meetup.com/oembed', true ), + '#https?://(www\.)?issuu\.com/.+/docs/.+#i' => array( 'http://issuu.com/oembed_wp', true ), + '#https?://(www\.)?collegehumor\.com/video/.*#i' => array( 'http://www.collegehumor.com/oembed.{format}', true ), + '#https?://(www\.)?mixcloud\.com/.*#i' => array( 'http://www.mixcloud.com/oembed', true ), + '#https?://(www\.|embed\.)?ted\.com/talks/.*#i' => array( 'http://www.ted.com/talks/oembed.{format}', true ), + '#https?://(www\.)?(animoto|video214)\.com/play/.*#i' => array( 'http://animoto.com/oembeds/create', true ), + ); + + if ( ! empty( self::$early_providers['add'] ) ) { + foreach ( self::$early_providers['add'] as $format => $data ) { + $providers[ $format ] = $data; + } + } + + if ( ! empty( self::$early_providers['remove'] ) ) { + foreach ( self::$early_providers['remove'] as $format ) { + unset( $providers[ $format ] ); + } + } + + self::$early_providers = array(); + /** * Filter the list of oEmbed providers. * @@ -89,71 +142,6 @@ class WP_oEmbed { * * @param array $providers An array of popular oEmbed providers. */ - $providers = apply_filters( 'oembed_providers', array( - '#http://(www\.)?youtube\.com/watch.*#i' => array( 'http://www.youtube.com/oembed', true ), - '#https://(www\.)?youtube\.com/watch.*#i' => array( 'http://www.youtube.com/oembed?scheme=https', true ), - '#http://(www\.)?youtube\.com/playlist.*#i' => array( 'http://www.youtube.com/oembed', true ), - '#https://(www\.)?youtube\.com/playlist.*#i' => array( 'http://www.youtube.com/oembed?scheme=https', true ), - '#http://youtu\.be/.*#i' => array( 'http://www.youtube.com/oembed', true ), - '#https://youtu\.be/.*#i' => array( 'http://www.youtube.com/oembed?scheme=https', true ), - 'http://blip.tv/*' => array( 'http://blip.tv/oembed/', false ), - '#https?://(.+\.)?vimeo\.com/.*#i' => array( 'http://vimeo.com/api/oembed.{format}', true ), - '#https?://(www\.)?dailymotion\.com/.*#i' => array( 'http://www.dailymotion.com/services/oembed', true ), - 'http://dai.ly/*' => array( 'http://www.dailymotion.com/services/oembed', false ), - '#https?://(www\.)?flickr\.com/.*#i' => array( 'https://www.flickr.com/services/oembed/', true ), - '#https?://flic\.kr/.*#i' => array( 'https://www.flickr.com/services/oembed/', true ), - '#https?://(.+\.)?smugmug\.com/.*#i' => array( 'http://api.smugmug.com/services/oembed/', true ), - '#https?://(www\.)?hulu\.com/watch/.*#i' => array( 'http://www.hulu.com/api/oembed.{format}', true ), - 'http://revision3.com/*' => array( 'http://revision3.com/api/oembed/', false ), - 'http://i*.photobucket.com/albums/*' => array( 'http://photobucket.com/oembed', false ), - 'http://gi*.photobucket.com/groups/*' => array( 'http://photobucket.com/oembed', false ), - '#https?://(www\.)?scribd\.com/doc/.*#i' => array( 'http://www.scribd.com/services/oembed', true ), - 'http://wordpress.tv/*' => array( 'http://wordpress.tv/oembed/', false ), - '#https?://(.+\.)?polldaddy\.com/.*#i' => array( 'http://polldaddy.com/oembed/', true ), - '#https?://poll\.fm/.*#i' => array( 'http://polldaddy.com/oembed/', true ), - '#https?://(www\.)?funnyordie\.com/videos/.*#i' => array( 'http://www.funnyordie.com/oembed', true ), - '#https?://(www\.)?twitter\.com/.+?/status(es)?/.*#i' => array( 'https://api.twitter.com/1/statuses/oembed.{format}', true ), - '#https?://(www\.)?soundcloud\.com/.*#i' => array( 'http://soundcloud.com/oembed', true ), - '#https?://(www\.)?slideshare\.net/.*#i' => array( 'https://www.slideshare.net/api/oembed/2', true ), - '#http://instagr(\.am|am\.com)/p/.*#i' => array( 'http://api.instagram.com/oembed', true ), - '#https?://(www\.)?rdio\.com/.*#i' => array( 'http://www.rdio.com/api/oembed/', true ), - '#https?://rd\.io/x/.*#i' => array( 'http://www.rdio.com/api/oembed/', true ), - '#https?://(open|play)\.spotify\.com/.*#i' => array( 'https://embed.spotify.com/oembed/', true ), - '#https?://(.+\.)?imgur\.com/.*#i' => array( 'http://api.imgur.com/oembed', true ), - '#https?://(www\.)?meetu(\.ps|p\.com)/.*#i' => array( 'http://api.meetup.com/oembed', true ), - '#https?://(www\.)?issuu\.com/.+/docs/.+#i' => array( 'http://issuu.com/oembed_wp', true ), - '#https?://(www\.)?collegehumor\.com/video/.*#i' => array( 'http://www.collegehumor.com/oembed.{format}', true ), - '#https?://(www\.)?mixcloud\.com/.*#i' => array( 'http://www.mixcloud.com/oembed', true ), - '#https?://(www\.|embed\.)?ted\.com/talks/.*#i' => array( 'http://www.ted.com/talks/oembed.{format}', true ), - '#https?://(www\.)?(animoto|video214)\.com/play/.*#i' => array( 'http://animoto.com/oembeds/create', true ), - ) ); - - if ( ! empty( self::$early_providers['add'] ) ) { - foreach ( self::$early_providers['add'] as $format => $data ) { - $providers[ $format ] = $data; - } - } - - if ( ! empty( self::$early_providers['remove'] ) ) { - foreach ( self::$early_providers['remove'] as $format ) { - unset( $providers[ $format ] ); - } - } - - self::$early_providers = array(); - - /** - * Filter the list of oEmbed providers. - * - * Discovery is disabled for users lacking the unfiltered_html capability. - * Only providers in this array will be used for those users. - * - * @see wp_oembed_add_provider() - * - * @since 2.9.0 - * - * @param array $providers An array of popular oEmbed providers. - */ $this->providers = apply_filters( 'oembed_providers', $providers ); // Fix any embeds that contain new lines in the middle of the HTML which breaks wpautop().