Make WordPress Core

Changeset 41606


Ignore:
Timestamp:
09/27/2017 08:35:16 AM (6 years ago)
Author:
swissspidy
Message:

Embeds: Maintain switched state when embedding a post on Multisite.

Props bor0.
Fixes #40673.

Location:
trunk
Files:
2 edited

Legend:

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

    r41600 r41606  
    10721072 */
    10731073function wp_filter_pre_oembed_result( $result, $url, $args ) {
     1074    $switched_blog = false;
     1075
    10741076    if ( is_multisite() ) {
    10751077        $url_parts = wp_parse_args( wp_parse_url( $url ), array(
     
    10951097        if ( $site && (int) $site->blog_id !== get_current_blog_id() ) {
    10961098            switch_to_blog( $site->blog_id );
     1099            $switched_blog = true;
    10971100        }
    10981101    }
     
    11121115    $data = _wp_oembed_get_object()->data2html( (object) $data, $url );
    11131116
    1114     if ( is_multisite() && ms_is_switched() ) {
     1117    if ( $switched_blog ) {
    11151118        restore_current_blog();
    11161119    }
  • trunk/tests/phpunit/tests/oembed/wpOembed.php

    r41600 r41606  
    172172        $this->assertEquals( $this->pre_oembed_result_filtered, $actual );
    173173    }
     174
     175    /**
     176     * @ticket 40673
     177     * @group multisite
     178     * @group ms-required
     179     */
     180    public function test_wp_filter_pre_oembed_result_multisite_preserves_switched_state() {
     181        $user_id = self::factory()->user->create();
     182
     183        $blog_id = self::factory()->blog->create( array( 'user_id' => $user_id ) );
     184        switch_to_blog( $blog_id );
     185
     186        $expected_stack = $GLOBALS['_wp_switched_stack'];
     187
     188        $post_id   = self::factory()->post->create();
     189        $permalink = get_permalink( $post_id );
     190
     191        add_filter( 'pre_oembed_result', array( $this, '_filter_pre_oembed_result' ) );
     192        $actual = $this->oembed->get_html( $permalink );
     193        remove_filter( 'pre_oembed_result', array( $this, '_filter_pre_oembed_result' ) );
     194
     195        $actual_stack = $GLOBALS['_wp_switched_stack'];
     196
     197        restore_current_blog();
     198
     199        $this->assertNotNull( $this->pre_oembed_result_filtered );
     200        $this->assertEquals( $this->pre_oembed_result_filtered, $actual );
     201        $this->assertSame( $expected_stack, $actual_stack );
     202    }
    174203}
Note: See TracChangeset for help on using the changeset viewer.