Make WordPress Core


Ignore:
Timestamp:
06/26/2014 02:29:20 AM (11 years ago)
Author:
wonderboymusic
Message:

When wp_oembed_add_provider() or wp_oembed_remove_provider() is called before the plugins_loaded hook has, store the values statically on the WP_oEmbed object and add them just-in-time when the object is instantiated.

This ensures that all plugins have an accurate provider list when apply_filters( 'oembed_providers', $providers ) is called.

Props kovshenin.
Fixes #28284.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/media.php

    r28682 r28846  
    21362136function wp_oembed_add_provider( $format, $provider, $regex = false ) {
    21372137    require_once( ABSPATH . WPINC . '/class-oembed.php' );
    2138     $oembed = _wp_oembed_get_object();
    2139     $oembed->providers[$format] = array( $provider, $regex );
     2138
     2139    if ( did_action( 'plugins_loaded' ) ) {
     2140        $oembed = _wp_oembed_get_object();
     2141        $oembed->providers[$format] = array( $provider, $regex );
     2142    } else {
     2143        WP_oEmbed::_add_provider_early( $format, $provider, $regex );
     2144    }
    21402145}
    21412146
     
    21532158    require_once( ABSPATH . WPINC . '/class-oembed.php' );
    21542159
    2155     $oembed = _wp_oembed_get_object();
    2156 
    2157     if ( isset( $oembed->providers[ $format ] ) ) {
    2158         unset( $oembed->providers[ $format ] );
    2159         return true;
     2160    if ( did_action( 'plugins_loaded' ) ) {
     2161        $oembed = _wp_oembed_get_object();
     2162
     2163        if ( isset( $oembed->providers[ $format ] ) ) {
     2164            unset( $oembed->providers[ $format ] );
     2165            return true;
     2166        }
     2167    } else {
     2168        WP_oEmbed::_remove_provider_early( $format );
    21602169    }
    21612170
Note: See TracChangeset for help on using the changeset viewer.