Make WordPress Core

Changeset 48310


Ignore:
Timestamp:
07/05/2020 10:15:40 AM (6 years ago)
Author:
SergeyBiryukov
Message:

Post Thumbnails: Change the return value of get_post_thumbnail_id() for a non-existing post to false instead of an empty string.

This further makes the function more consistent with get_the_ID() or wp_get_post_parent_id(), both returning false for a non-existing post.

Additionally, document that get_post_thumbnail_id() returns 0 if the thumbnail image is not set.

Follow-up to [47160].

Props theMikeD, dingo_d, netpassprodsr, SergeyBiryukov.
Fixes #49832. See #40096.

Location:
trunk
Files:
3 edited

Legend:

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

    r47160 r48310  
    4444 * @since 2.9.0
    4545 * @since 4.4.0 `$post` can be a post ID or WP_Post object.
    46  *
    47  * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global `$post`.
    48  * @return int|string Post thumbnail ID or empty string if the post does not exist.
     46 * @since 5.5.0 The return value for a non-existing post
     47 *              was changed to false instead of an empty string.
     48 *
     49 * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global `$post`.
     50 * @return int|false Post thumbnail ID (which can be 0 if the thumbnail is not set),
     51 *                   or false if the post does not exist.
    4952 */
    5053function get_post_thumbnail_id( $post = null ) {
    5154        $post = get_post( $post );
     55
    5256        if ( ! $post ) {
    53                 return '';
    54         }
     57                return false;
     58        }
     59
    5560        return (int) get_post_meta( $post->ID, '_thumbnail_id', true );
    5661}
     
    98103
    99104        $thumb_ids = array();
     105
    100106        foreach ( $wp_query->posts as $post ) {
    101107                $id = get_post_thumbnail_id( $post->ID );
     
    134140function get_the_post_thumbnail( $post = null, $size = 'post-thumbnail', $attr = '' ) {
    135141        $post = get_post( $post );
     142
    136143        if ( ! $post ) {
    137144                return '';
    138145        }
     146
    139147        $post_thumbnail_id = get_post_thumbnail_id( $post );
    140148
     
    166174                 */
    167175                do_action( 'begin_fetch_post_thumbnail_html', $post->ID, $post_thumbnail_id, $size );
     176
    168177                if ( in_the_loop() ) {
    169178                        update_post_thumbnail_cache();
    170179                }
     180
    171181                $html = wp_get_attachment_image( $post_thumbnail_id, $size, false, $attr );
    172182
     
    186196                $html = '';
    187197        }
     198
    188199        /**
    189200         * Filters the post thumbnail HTML.
     
    213224function get_the_post_thumbnail_url( $post = null, $size = 'post-thumbnail' ) {
    214225        $post_thumbnail_id = get_post_thumbnail_id( $post );
     226
    215227        if ( ! $post_thumbnail_id ) {
    216228                return false;
    217229        }
     230
    218231        return wp_get_attachment_image_url( $post_thumbnail_id, $size );
    219232}
     
    230243function the_post_thumbnail_url( $size = 'post-thumbnail' ) {
    231244        $url = get_the_post_thumbnail_url( null, $size );
     245
    232246        if ( $url ) {
    233247                echo esc_url( $url );
     
    245259function get_the_post_thumbnail_caption( $post = null ) {
    246260        $post_thumbnail_id = get_post_thumbnail_id( $post );
     261
    247262        if ( ! $post_thumbnail_id ) {
    248263                return '';
  • trunk/src/wp-includes/post.php

    r48214 r48310  
    70157015 *
    70167016 * @param int|WP_Post $post Post ID or post object. Defaults to global $post.
    7017  * @return int|false Post parent ID (which can be 0 if there is no parent), or false if the post does not exist.
     7017 * @return int|false Post parent ID (which can be 0 if there is no parent),
     7018 *                   or false if the post does not exist.
    70187019 */
    70197020function wp_get_post_parent_id( $post ) {
  • trunk/tests/phpunit/tests/post/thumbnails.php

    r46586 r48310  
    5555
    5656        function test_get_post_thumbnail_id() {
    57                 $this->assertEmpty( get_post_thumbnail_id( self::$post ) );
    58                 $this->assertEmpty( get_post_thumbnail_id( self::$post->ID ) );
    59                 $this->assertEmpty( get_post_thumbnail_id() );
     57                $this->assertSame( 0, get_post_thumbnail_id( self::$post ) );
     58                $this->assertSame( 0, get_post_thumbnail_id( self::$post->ID ) );
     59                $this->assertFalse( get_post_thumbnail_id() );
    6060
    6161                set_post_thumbnail( self::$post, self::$attachment_id );
Note: See TracChangeset for help on using the changeset viewer.