Ticket #36711: 36711.3.patch
File 36711.3.patch, 2.4 KB (added by , 8 years ago) |
---|
-
src/wp-includes/post.php
4248 4248 4249 4249 $post_types = esc_sql( $post_types ); 4250 4250 $post_type_in_string = "'" . implode( "','", $post_types ) . "'"; 4251 4252 $key = $in_string . ":" . $post_type_in_string; 4253 $last_changed = wp_cache_get( 'last_changed', 'posts' ); 4254 if ( ! $last_changed ) { 4255 $last_changed = microtime(); 4256 wp_cache_set( 'last_changed', $last_changed, 'posts' ); 4257 } 4258 $cache_key = "get_page_by_path:$key:$last_changed"; 4259 if ( $cache = wp_cache_get( $cache_key, 'posts' ) ) { 4260 return get_post( $cache, $output ); 4261 } 4262 4251 4263 $sql = " 4252 4264 SELECT ID, post_name, post_parent, post_type 4253 4265 FROM $wpdb->posts … … 4284 4296 } 4285 4297 } 4286 4298 } 4299 4300 wp_cache_set( $cache_key, $foundid, 'posts' ); 4287 4301 4288 4302 if ( $foundid ) { 4289 4303 return get_post( $foundid, $output ); -
tests/phpunit/tests/post.php
565 565 $this->assertEquals( $other_att, get_page_by_path( 'some-other-page' ) ); 566 566 } 567 567 568 569 /** 570 * @ticket 36711 571 */ 572 function test_get_page_by_path_cache() { 573 global $wpdb; 574 575 $page = self::factory()->post->create_and_get( array( 'post_title' => 'some-page', 'post_type' => 'page' ) ); 576 $wpdb->update( $wpdb->posts, array( 'post_name' => 'some-page' ), array( 'ID' => $page->ID ) ); 577 clean_post_cache( $page->ID ); 578 579 $page = get_post( $page->ID ); 580 581 $this->assertEquals( 'some-page', $page->post_name ); 582 $this->assertEquals( $page, get_page_by_path( 'some-page' ) ); 583 584 $wpdb->update( $wpdb->posts, array( 'post_name' => 'another-url' ), array( 'ID' => $page->ID ) ); 585 clean_post_cache( $page->ID ); 586 587 $page = get_post( $page->ID ); 588 // Test changing url 589 $this->assertEquals( 'another-url', $page->post_name ); 590 $this->assertEquals( $page, get_page_by_path( 'another-url' ) ); 591 592 $num_queries = $wpdb->num_queries; 593 $this->assertEquals( $page, get_page_by_path( 'another-url' ) ); 594 // Test caching 595 $this->assertEquals( $num_queries, $wpdb->num_queries ); 596 597 } 598 568 599 function test_wp_publish_post() { 569 600 $draft_id = self::factory()->post->create( array( 'post_status' => 'draft' ) ); 570 601