Make WordPress Core

Changeset 54464


Ignore:
Timestamp:
10/10/2022 11:01:08 PM (4 years 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.