Ticket #36711: 36711.4.patch
File 36711.4.patch, 2.9 KB (added by , 9 years ago) |
---|
-
src/wp-includes/post.php
4241 4241 $in_string = "'" . implode( "','", $parts ) . "'"; 4242 4242 4243 4243 if ( is_array( $post_type ) ) { 4244 $last_changed = wp_cache_get( 'last_changed', 'posts' ); 4245 if ( ! $last_changed ) { 4246 $last_changed = microtime(); 4247 wp_cache_set( 'last_changed', $last_changed, 'posts' ); 4248 } 4249 $cache_key = md5( serialize( $post_type ) ) . ':' . sanitize_key( $page_path ) . ':' . $last_changed; 4244 4250 $post_types = $post_type; 4245 4251 } else { 4246 4252 $post_types = array( $post_type, 'attachment' ); 4253 $cache_key = $post_type . ':' . sanitize_key( $page_path ); 4247 4254 } 4248 4255 4256 if ( $cache = wp_cache_get( $cache_key, 'get_page_by_path' ) ) { 4257 return get_post( $cache, $output ); 4258 } 4259 4249 4260 $post_types = esc_sql( $post_types ); 4250 4261 $post_type_in_string = "'" . implode( "','", $post_types ) . "'"; 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 ); … … 5654 5668 5655 5669 wp_cache_delete( 'wp_get_archives', 'general' ); 5656 5670 5671 $page_path = get_page_uri( $post->ID ); 5672 wp_cache_delete( $post->post_type . ':' . sanitize_key( $page_path ), 'get_page_by_path' ); 5673 5657 5674 /** 5658 5675 * Fires immediately after the given post's cache is cleaned. 5659 5676 * -
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