diff --git a/includes/validation/class-amp-invalid-url-post-type.php b/includes/validation/class-amp-invalid-url-post-type.php index 773195c4997..43e68e0a576 100644 --- a/includes/validation/class-amp-invalid-url-post-type.php +++ b/includes/validation/class-amp-invalid-url-post-type.php @@ -360,9 +360,11 @@ public static function get_url_from_post( $post ) { public static function store_validation_errors( $validation_errors, $url, $args = array() ) { $url = remove_query_arg( amp_get_slug(), $url ); // Only ever store the canonical version. $slug = md5( $url ); - if ( isset( $args['invalid_url_post'] ) ) { + $post = null; + if ( ! empty( $args['invalid_url_post'] ) ) { $post = get_post( $args['invalid_url_post'] ); - } else { + } + if ( ! $post ) { $post = get_page_by_path( $slug, OBJECT, self::POST_TYPE_SLUG ); if ( ! $post ) { $post = get_page_by_path( $slug . '__trashed', OBJECT, self::POST_TYPE_SLUG ); diff --git a/tests/validation/test-class-amp-invalid-url-post-type.php b/tests/validation/test-class-amp-invalid-url-post-type.php index 2256703d9ca..f8b861a7815 100644 --- a/tests/validation/test-class-amp-invalid-url-post-type.php +++ b/tests/validation/test-class-amp-invalid-url-post-type.php @@ -288,6 +288,7 @@ public function test_get_url_from_post() { * @covers \AMP_Invalid_URL_Post_Type::store_validation_errors() */ public function test_store_validation_errors() { + global $post; add_theme_support( 'amp', array( 'paired' => true ) ); AMP_Validation_Manager::init(); $post = $this->factory()->post->create_and_get(); @@ -335,9 +336,13 @@ public function test_store_validation_errors() { $invalid_url_post_id = AMP_Invalid_URL_Post_Type::store_validation_errors( $errors, - get_permalink( $post ) + get_permalink( $post ), + array( + 'invalid_url_post' => 0, + ) ); $this->assertNotInstanceOf( 'WP_Error', $invalid_url_post_id ); + $this->assertNotEquals( $invalid_url_post_id, $post->ID, 'Passing an empty invalid_url_post should not re-use the global $post ever.' ); // Test resurrection from trash. wp_trash_post( $invalid_url_post_id );