WordPress.org

Make WordPress Core

Changeset 38263


Ignore:
Timestamp:
08/15/16 19:15:48 (12 months ago)
Author:
ocean90
Message:

Post Thumbnails: Restore thumbnail support for media files.

  • Allow to add/remove a featured image to attachment:audio and attachment:video post types, see [27657].
  • Change conditionals to check for theme OR post type support.
  • Add tests for #12922.

Broken in [37658].

Props flixos90, joemcgill, DrewAPicture, wonderboymusic.
See #12922.
Fixes #37658.

Location:
trunk
Files:
2 edited

Legend:

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

    r38201 r38263  
    32603260    } 
    32613261 
    3262     // Set or remove featured image. 
    3263     if ( isset( $postarr['_thumbnail_id'] ) && ( post_type_supports( $post_type, 'thumbnail' ) || 'revision' === $post_type ) ) { 
    3264         $thumbnail_id = intval( $postarr['_thumbnail_id'] ); 
    3265         if ( -1 === $thumbnail_id ) { 
    3266             delete_post_thumbnail( $post_ID ); 
    3267         } else { 
    3268             set_post_thumbnail( $post_ID, $thumbnail_id ); 
    3269         } 
    3270     } 
    3271  
    32723262    if ( ! empty( $postarr['meta_input'] ) ) { 
    32733263        foreach ( $postarr['meta_input'] as $field => $value ) { 
     
    32903280        if ( ! empty( $postarr['context'] ) ) { 
    32913281            add_post_meta( $post_ID, '_wp_attachment_context', $postarr['context'], true ); 
     3282        } 
     3283    } 
     3284 
     3285    // Set or remove featured image. 
     3286    if ( isset( $postarr['_thumbnail_id'] ) ) { 
     3287        $thumbnail_support = current_theme_supports( 'post-thumbnails', $post_type ) && post_type_supports( $post_type, 'thumbnail' ) || 'revision' === $post_type; 
     3288        if ( ! $thumbnail_support && 'attachment' === $post_type && $post_mime_type ) { 
     3289            if ( wp_attachment_is( 'audio', $post_ID ) ) { 
     3290                $thumbnail_support = post_type_supports( 'attachment:audio', 'thumbnail' ) || current_theme_supports( 'post-thumbnails', 'attachment:audio' ); 
     3291            } elseif ( wp_attachment_is( 'video', $post_ID ) ) { 
     3292                $thumbnail_support = post_type_supports( 'attachment:video', 'thumbnail' ) || current_theme_supports( 'post-thumbnails', 'attachment:video' ); 
     3293            } 
     3294        } 
     3295 
     3296        if ( $thumbnail_support ) { 
     3297            $thumbnail_id = intval( $postarr['_thumbnail_id'] ); 
     3298            if ( -1 === $thumbnail_id ) { 
     3299                delete_post_thumbnail( $post_ID ); 
     3300            } else { 
     3301                set_post_thumbnail( $post_ID, $thumbnail_id ); 
     3302            } 
    32923303        } 
    32933304    } 
  • trunk/tests/phpunit/tests/post/thumbnails.php

    r37915 r38263  
    234234        $this->assertEquals( wp_get_attachment_url( self::$attachment_id ), $actual ); 
    235235    } 
     236 
     237    /** 
     238     * @ticket 12922 
     239     */ 
     240    function test__wp_preview_post_thumbnail_filter() { 
     241        $old_post = isset( $GLOBALS['post'] ) ? $GLOBALS['post'] : null; 
     242 
     243        $GLOBALS['post'] = self::$post; 
     244        $_REQUEST['_thumbnail_id'] = self::$attachment_id; 
     245 
     246        $result = _wp_preview_post_thumbnail_filter( '', self::$post->ID, '_thumbnail_id' ); 
     247        $this->assertEquals( self::$attachment_id, $result ); 
     248 
     249        unset( $_REQUEST['_thumbnail_id'] ); 
     250        if ( null === $old_post ) { 
     251            unset( $GLOBALS['post'] ); 
     252        } else { 
     253            $GLOBALS['post'] = $old_post; 
     254        } 
     255    } 
     256 
     257    /** 
     258     * @ticket 12922 
     259     */ 
     260    function test_insert_post_with_post_thumbnail() { 
     261        $post_id = wp_insert_post( array( 
     262            'ID'            => self::$post->ID, 
     263            'post_status'   => 'publish', 
     264            'post_content'  => rand_str(), 
     265            'post_title'    => rand_str(), 
     266            '_thumbnail_id' => self::$attachment_id, 
     267        ) ); 
     268 
     269        $thumbnail_id = get_post_thumbnail_id( $post_id ); 
     270        $this->assertEquals( self::$attachment_id, $thumbnail_id ); 
     271 
     272        $post_id = wp_insert_post( array( 
     273            'ID'            => $post_id, 
     274            'post_status'   => 'publish', 
     275            'post_content'  => rand_str(), 
     276            'post_title'    => rand_str(), 
     277            '_thumbnail_id' => - 1, // -1 removes post thumbnail. 
     278        ) ); 
     279 
     280        $thumbnail_id = get_post_thumbnail_id( $post_id ); 
     281        $this->assertEmpty( $thumbnail_id ); 
     282    } 
     283 
     284    /** 
     285     * @ticket 37658 
     286     */ 
     287    function test_insert_attachment_with_post_thumbnail() { 
     288        // Audio files support featured images. 
     289        $post_id = wp_insert_post( array( 
     290            'post_type'      => 'attachment', 
     291            'post_status'    => 'inherit', 
     292            'post_content'   => rand_str(), 
     293            'post_title'     => rand_str(), 
     294            'post_mime_type' => 'audio/mpeg', 
     295            'post_parent'    => 0, 
     296            'file'           => DIR_TESTDATA . '/audio/test-noise.mp3', // File does not exist, but does not matter here. 
     297            '_thumbnail_id'  => self::$attachment_id, 
     298        ) ); 
     299 
     300        $thumbnail_id = get_post_thumbnail_id( $post_id ); 
     301        $this->assertEquals( self::$attachment_id, $thumbnail_id ); 
     302 
     303        // Images do not support featured images. 
     304        $post_id = wp_insert_post( array( 
     305            'post_type'      => 'attachment', 
     306            'post_status'    => 'inherit', 
     307            'post_content'   => rand_str(), 
     308            'post_title'     => rand_str(), 
     309            'post_mime_type' => 'image/jpeg', 
     310            'post_parent'    => 0, 
     311            'file'           => DIR_TESTDATA . '/images/canola.jpg', 
     312            '_thumbnail_id'  => self::$attachment_id, 
     313        ) ); 
     314 
     315        $thumbnail_id = get_post_thumbnail_id( $post_id ); 
     316        $this->assertEmpty( $thumbnail_id ); 
     317    } 
    236318} 
Note: See TracChangeset for help on using the changeset viewer.