Make WordPress Core

Changeset 54464


Ignore:
Timestamp:
10/10/2022 11:01:08 PM (20 months ago)
Author:
audrasjb
Message:

Query: Prevent PHP notice when get_post_type_object() returns null in is_post_type_archive().

This changeset avoids potential PHP notices caused by get_post_type_object() returning null when called inside is_post_type_archive().

Props sean212, costdev.
Fixes #56287.

Location:
trunk
Files:
2 edited

Legend:

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

    r54410 r54464  
    39363936        $post_type_object = get_post_type_object( $post_type );
    39373937
     3938        if ( ! $post_type_object ) {
     3939            return false;
     3940        }
     3941
    39383942        return in_array( $post_type_object->name, (array) $post_types, true );
    39393943    }
  • trunk/tests/phpunit/tests/query.php

    r54090 r54464  
    770770        $this->assertSame( '/* posts_join_request */', $posts_clauses_request['join'] );
    771771    }
     772
     773    /**
     774     * Tests that is_post_type_archive() returns false for an undefined post type.
     775     *
     776     * @ticket 56287
     777     *
     778     * @covers ::is_post_type_archive
     779     */
     780    public function test_is_post_type_archive_should_return_false_for_an_undefined_post_type() {
     781        global $wp_query;
     782
     783        $post_type = '56287-post-type';
     784
     785        // Force the request to be a post type archive.
     786        $wp_query->is_post_type_archive = true;
     787        $wp_query->set( 'post_type', $post_type );
     788
     789        $this->assertFalse( is_post_type_archive( $post_type ) );
     790    }
    772791}
Note: See TracChangeset for help on using the changeset viewer.