Changeset 34851 for trunk/src/wp-includes/media.php
- Timestamp:
- 10/06/2015 03:58:42 AM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/media.php
r34657 r34851 2178 2178 2179 2179 /** 2180 * Registers an embed handler.2181 *2182 * Should probably only be used for sites that do not support oEmbed.2183 *2184 * @since 2.9.02185 *2186 * @global WP_Embed $wp_embed2187 *2188 * @param string $id An internal ID/name for the handler. Needs to be unique.2189 * @param string $regex The regex that will be used to see if this handler should be used for a URL.2190 * @param callable $callback The callback function that will be called if the regex is matched.2191 * @param int $priority Optional. Used to specify the order in which the registered handlers will2192 * be tested. Default 10.2193 */2194 function wp_embed_register_handler( $id, $regex, $callback, $priority = 10 ) {2195 global $wp_embed;2196 $wp_embed->register_handler( $id, $regex, $callback, $priority );2197 }2198 2199 /**2200 * Unregisters a previously-registered embed handler.2201 *2202 * @since 2.9.02203 *2204 * @global WP_Embed $wp_embed2205 *2206 * @param string $id The handler ID that should be removed.2207 * @param int $priority Optional. The priority of the handler to be removed. Default 10.2208 */2209 function wp_embed_unregister_handler( $id, $priority = 10 ) {2210 global $wp_embed;2211 $wp_embed->unregister_handler( $id, $priority );2212 }2213 2214 /**2215 * Create default array of embed parameters.2216 *2217 * The width defaults to the content width as specified by the theme. If the2218 * theme does not specify a content width, then 500px is used.2219 *2220 * The default height is 1.5 times the width, or 1000px, whichever is smaller.2221 *2222 * The 'embed_defaults' filter can be used to adjust either of these values.2223 *2224 * @since 2.9.02225 *2226 * @global int $content_width2227 *2228 * @param string $url Optional. The URL that should be embedded. Default empty.2229 *2230 * @return array Default embed parameters.2231 */2232 function wp_embed_defaults( $url = '' ) {2233 if ( ! empty( $GLOBALS['content_width'] ) )2234 $width = (int) $GLOBALS['content_width'];2235 2236 if ( empty( $width ) )2237 $width = 500;2238 2239 $height = min( ceil( $width * 1.5 ), 1000 );2240 2241 /**2242 * Filter the default array of embed dimensions.2243 *2244 * @since 2.9.02245 *2246 * @param int $width Width of the embed in pixels.2247 * @param int $height Height of the embed in pixels.2248 * @param string $url The URL that should be embedded.2249 */2250 return apply_filters( 'embed_defaults', compact( 'width', 'height' ), $url );2251 }2252 2253 /**2254 2180 * Based on a supplied width/height example, return the biggest possible dimensions based on the max width/height. 2255 2181 * … … 2271 2197 2272 2198 return wp_constrain_dimensions( $example_width * 1000000, $example_height * 1000000, $max_width, $max_height ); 2273 }2274 2275 /**2276 * Attempts to fetch the embed HTML for a provided URL using oEmbed.2277 *2278 * @since 2.9.02279 *2280 * @see WP_oEmbed2281 *2282 * @param string $url The URL that should be embedded.2283 * @param array $args Optional. Additional arguments and parameters for retrieving embed HTML.2284 * Default empty.2285 * @return false|string False on failure or the embed HTML on success.2286 */2287 function wp_oembed_get( $url, $args = '' ) {2288 require_once( ABSPATH . WPINC . '/class-oembed.php' );2289 $oembed = _wp_oembed_get_object();2290 return $oembed->get_html( $url, $args );2291 }2292 2293 /**2294 * Adds a URL format and oEmbed provider URL pair.2295 *2296 * @since 2.9.02297 *2298 * @see WP_oEmbed2299 *2300 * @param string $format The format of URL that this provider can handle. You can use asterisks2301 * as wildcards.2302 * @param string $provider The URL to the oEmbed provider.2303 * @param boolean $regex Optional. Whether the `$format` parameter is in a RegEx format. Default false.2304 */2305 function wp_oembed_add_provider( $format, $provider, $regex = false ) {2306 require_once( ABSPATH . WPINC . '/class-oembed.php' );2307 2308 if ( did_action( 'plugins_loaded' ) ) {2309 $oembed = _wp_oembed_get_object();2310 $oembed->providers[$format] = array( $provider, $regex );2311 } else {2312 WP_oEmbed::_add_provider_early( $format, $provider, $regex );2313 }2314 }2315 2316 /**2317 * Removes an oEmbed provider.2318 *2319 * @since 3.5.02320 *2321 * @see WP_oEmbed2322 *2323 * @param string $format The URL format for the oEmbed provider to remove.2324 * @return bool Was the provider removed successfully?2325 */2326 function wp_oembed_remove_provider( $format ) {2327 require_once( ABSPATH . WPINC . '/class-oembed.php' );2328 2329 if ( did_action( 'plugins_loaded' ) ) {2330 $oembed = _wp_oembed_get_object();2331 2332 if ( isset( $oembed->providers[ $format ] ) ) {2333 unset( $oembed->providers[ $format ] );2334 return true;2335 }2336 } else {2337 WP_oEmbed::_remove_provider_early( $format );2338 }2339 2340 return false;2341 }2342 2343 /**2344 * Determines if default embed handlers should be loaded.2345 *2346 * Checks to make sure that the embeds library hasn't already been loaded. If2347 * it hasn't, then it will load the embeds library.2348 *2349 * @since 2.9.02350 *2351 * @see wp_embed_register_handler()2352 */2353 function wp_maybe_load_embeds() {2354 /**2355 * Filter whether to load the default embed handlers.2356 *2357 * Returning a falsey value will prevent loading the default embed handlers.2358 *2359 * @since 2.9.02360 *2361 * @param bool $maybe_load_embeds Whether to load the embeds library. Default true.2362 */2363 if ( ! apply_filters( 'load_default_embeds', true ) ) {2364 return;2365 }2366 2367 wp_embed_register_handler( 'youtube_embed_url', '#https?://(www.)?youtube\.com/(?:v|embed)/([^/]+)#i', 'wp_embed_handler_youtube' );2368 2369 wp_embed_register_handler( 'googlevideo', '#http://video\.google\.([A-Za-z.]{2,5})/videoplay\?docid=([\d-]+)(.*?)#i', 'wp_embed_handler_googlevideo' );2370 2371 /**2372 * Filter the audio embed handler callback.2373 *2374 * @since 3.6.02375 *2376 * @param callable $handler Audio embed handler callback function.2377 */2378 wp_embed_register_handler( 'audio', '#^https?://.+?\.(' . join( '|', wp_get_audio_extensions() ) . ')$#i', apply_filters( 'wp_audio_embed_handler', 'wp_embed_handler_audio' ), 9999 );2379 2380 /**2381 * Filter the video embed handler callback.2382 *2383 * @since 3.6.02384 *2385 * @param callable $handler Video embed handler callback function.2386 */2387 wp_embed_register_handler( 'video', '#^https?://.+?\.(' . join( '|', wp_get_video_extensions() ) . ')$#i', apply_filters( 'wp_video_embed_handler', 'wp_embed_handler_video' ), 9999 );2388 }2389 2390 /**2391 * The Google Video embed handler callback.2392 *2393 * Google Video does not support oEmbed.2394 *2395 * @see WP_Embed::register_handler()2396 * @see WP_Embed::shortcode()2397 *2398 * @param array $matches The RegEx matches from the provided regex when calling wp_embed_register_handler().2399 * @param array $attr Embed attributes.2400 * @param string $url The original URL that was matched by the regex.2401 * @param array $rawattr The original unmodified attributes.2402 * @return string The embed HTML.2403 */2404 function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) {2405 // If the user supplied a fixed width AND height, use it2406 if ( !empty($rawattr['width']) && !empty($rawattr['height']) ) {2407 $width = (int) $rawattr['width'];2408 $height = (int) $rawattr['height'];2409 } else {2410 list( $width, $height ) = wp_expand_dimensions( 425, 344, $attr['width'], $attr['height'] );2411 }2412 2413 /**2414 * Filter the Google Video embed output.2415 *2416 * @since 2.9.02417 *2418 * @param string $html Google Video HTML embed markup.2419 * @param array $matches The RegEx matches from the provided regex.2420 * @param array $attr An array of embed attributes.2421 * @param string $url The original URL that was matched by the regex.2422 * @param array $rawattr The original unmodified attributes.2423 */2424 return apply_filters( 'embed_googlevideo', '<embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid=' . esc_attr($matches[2]) . '&hl=en&fs=true" style="width:' . esc_attr($width) . 'px;height:' . esc_attr($height) . 'px" allowFullScreen="true" allowScriptAccess="always" />', $matches, $attr, $url, $rawattr );2425 }2426 2427 /**2428 * YouTube iframe embed handler callback.2429 *2430 * Catches YouTube iframe embed URLs that are not parsable by oEmbed but can be translated into a URL that is.2431 *2432 * @since 4.0.02433 *2434 * @global WP_Embed $wp_embed2435 *2436 * @param array $matches The RegEx matches from the provided regex when calling2437 * wp_embed_register_handler().2438 * @param array $attr Embed attributes.2439 * @param string $url The original URL that was matched by the regex.2440 * @param array $rawattr The original unmodified attributes.2441 * @return string The embed HTML.2442 */2443 function wp_embed_handler_youtube( $matches, $attr, $url, $rawattr ) {2444 global $wp_embed;2445 $embed = $wp_embed->autoembed( "https://youtube.com/watch?v={$matches[2]}" );2446 2447 /**2448 * Filter the YoutTube embed output.2449 *2450 * @since 4.0.02451 *2452 * @see wp_embed_handler_youtube()2453 *2454 * @param string $embed YouTube embed output.2455 * @param array $attr An array of embed attributes.2456 * @param string $url The original URL that was matched by the regex.2457 * @param array $rawattr The original unmodified attributes.2458 */2459 return apply_filters( 'wp_embed_handler_youtube', $embed, $attr, $url, $rawattr );2460 }2461 2462 /**2463 * Audio embed handler callback.2464 *2465 * @since 3.6.02466 *2467 * @param array $matches The RegEx matches from the provided regex when calling wp_embed_register_handler().2468 * @param array $attr Embed attributes.2469 * @param string $url The original URL that was matched by the regex.2470 * @param array $rawattr The original unmodified attributes.2471 * @return string The embed HTML.2472 */2473 function wp_embed_handler_audio( $matches, $attr, $url, $rawattr ) {2474 $audio = sprintf( '[audio src="%s" /]', esc_url( $url ) );2475 2476 /**2477 * Filter the audio embed output.2478 *2479 * @since 3.6.02480 *2481 * @param string $audio Audio embed output.2482 * @param array $attr An array of embed attributes.2483 * @param string $url The original URL that was matched by the regex.2484 * @param array $rawattr The original unmodified attributes.2485 */2486 return apply_filters( 'wp_embed_handler_audio', $audio, $attr, $url, $rawattr );2487 }2488 2489 /**2490 * Video embed handler callback.2491 *2492 * @since 3.6.02493 *2494 * @param array $matches The RegEx matches from the provided regex when calling wp_embed_register_handler().2495 * @param array $attr Embed attributes.2496 * @param string $url The original URL that was matched by the regex.2497 * @param array $rawattr The original unmodified attributes.2498 * @return string The embed HTML.2499 */2500 function wp_embed_handler_video( $matches, $attr, $url, $rawattr ) {2501 $dimensions = '';2502 if ( ! empty( $rawattr['width'] ) && ! empty( $rawattr['height'] ) ) {2503 $dimensions .= sprintf( 'width="%d" ', (int) $rawattr['width'] );2504 $dimensions .= sprintf( 'height="%d" ', (int) $rawattr['height'] );2505 }2506 $video = sprintf( '[video %s src="%s" /]', $dimensions, esc_url( $url ) );2507 2508 /**2509 * Filter the video embed output.2510 *2511 * @since 3.6.02512 *2513 * @param string $video Video embed output.2514 * @param array $attr An array of embed attributes.2515 * @param string $url The original URL that was matched by the regex.2516 * @param array $rawattr The original unmodified attributes.2517 */2518 return apply_filters( 'wp_embed_handler_video', $video, $attr, $url, $rawattr );2519 2199 } 2520 2200
Note: See TracChangeset
for help on using the changeset viewer.