Changeset 42589
- Timestamp:
- 01/24/2018 07:11:40 AM (7 years ago)
- Location:
- branches/4.9
- Files:
-
- 4 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/4.9
- Property svn:mergeinfo changed
/trunk merged: 42401,42587-42588
- Property svn:mergeinfo changed
-
branches/4.9/src/wp-includes/default-filters.php
r42445 r42589 343 343 add_action( 'attachment_updated', 'wp_check_for_changed_slugs', 12, 3 ); 344 344 345 346 347 348 345 349 // Nonce check for Post Previews 346 350 add_action( 'init', '_show_post_preview' ); -
branches/4.9/src/wp-includes/post.php
r42056 r42589 5496 5496 5497 5497 /** 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5498 5539 * Retrieve the private post SQL based on capability. 5499 5540 * -
branches/4.9/src/wp-includes/query.php
r41168 r42589 844 844 * 845 845 * @since 2.1.0 846 *847 * @global wpdb $wpdb WordPress database abstraction object.848 846 */ 849 847 function wp_old_slug_redirect() { 850 848 if ( is_404() && '' !== get_query_var( 'name' ) ) { 851 global $wpdb;852 853 849 // Guess the current post_type based on the query vars. 854 850 if ( get_query_var( 'post_type' ) ) { … … 874 870 } 875 871 876 $query = $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta, $wpdb->posts WHERE ID = post_id AND post_type = %s AND meta_key = '_wp_old_slug' AND meta_value = %s", $post_type, get_query_var( 'name' ) ); 877 878 // if year, monthnum, or day have been specified, make our query more precise 879 // just in case there are multiple identical _wp_old_slug values 880 if ( get_query_var( 'year' ) ) { 881 $query .= $wpdb->prepare(" AND YEAR(post_date) = %d", get_query_var( 'year' ) ); 872 $id = _find_post_by_old_slug( $post_type ); 873 874 if ( ! $id ) { 875 $id = _find_post_by_old_date( $post_type ); 882 876 } 883 if ( get_query_var( 'monthnum' ) ) { 884 $query .= $wpdb->prepare(" AND MONTH(post_date) = %d", get_query_var( 'monthnum' ) ); 885 } 886 if ( get_query_var( 'day' ) ) { 887 $query .= $wpdb->prepare(" AND DAYOFMONTH(post_date) = %d", get_query_var( 'day' ) ); 888 } 889 890 $id = (int) $wpdb->get_var( $query ); 877 878 /** 879 * Filters the old slug redirect post ID. 880 * 881 * @since 4.9.3 882 * 883 * @param string $id The redirect post ID. 884 */ 885 $id = apply_filters( 'old_slug_redirect_post_id', $id ); 891 886 892 887 if ( ! $id ) { … … 921 916 922 917 /** 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 923 994 * Set up global post data. 924 995 * -
branches/4.9/tests/phpunit/tests/rewrite/oldDateRedirect.php
r42401 r42589 7 7 protected $old_date_redirect_url; 8 8 9 protected $post_id; 9 public static $post_id; 10 11 public static $attachment_id; 12 13 public static function wpSetUpBeforeClass() { 14 self::$post_id = self::factory()->post->create( array( 15 'post_title' => 'Foo Bar', 16 'post_name' => 'foo-bar', 17 ) ); 18 19 self::$attachment_id = self::factory()->attachment->create_object( 20 array( 21 'file' => DIR_TESTDATA . '/images/canola.jpg', 22 'post_mime_type' => 'image/jpeg', 23 'post_name' => 'my-attachment', 24 'post_parent' => self::$post_id, 25 ) 26 ); 27 } 10 28 11 29 public function setUp() { 12 30 parent::setUp(); 13 31 14 $this->post_id = self::factory()->post->create( array(15 'post_title' => 'Foo Bar',16 'post_name' => 'foo-bar',17 ) );18 19 32 add_filter( 'old_slug_redirect_url', array( $this, 'filter_old_date_redirect_url' ), 10, 1 ); 20 33 … … 31 44 32 45 $this->old_date_redirect_url = null; 33 34 remove_filter( 'old_slug_redirect_url', array( $this, 'filter_old_date_redirect_url' ), 10 );35 46 } 36 47 37 48 public function test_old_date_redirect() { 38 $old_permalink = user_trailingslashit( get_permalink( $this->post_id ) );39 40 $time = '2004-01-03 00:00:00'; 41 wp_update_post( array( 42 'ID' => $this->post_id,43 'post_date' => $time, 44 'post_date_gmt' => get_gmt_from_date( $time ), 45 ) ); 46 47 $permalink = user_trailingslashit( get_permalink( $this->post_id ) );48 49 $this->go_to( $old_permalink ); 50 wp_old_slug_redirect(); 51 $this->assert Equals( $permalink, $this->old_date_redirect_url );49 $old_permalink = user_trailingslashit( get_permalink( post_id ) ); 50 51 $time = '2004-01-03 00:00:00'; 52 wp_update_post( array( 53 'ID' => post_id, 54 'post_date' => $time, 55 'post_date_gmt' => get_gmt_from_date( $time ), 56 ) ); 57 58 $permalink = user_trailingslashit( get_permalink( post_id ) ); 59 60 $this->go_to( $old_permalink ); 61 wp_old_slug_redirect(); 62 $this->assert( $permalink, $this->old_date_redirect_url ); 52 63 } 53 64 54 65 public function test_old_date_slug_redirect() { 55 $old_permalink = user_trailingslashit( get_permalink( $this->post_id ) );56 57 $time = '2004-01-03 00:00:00'; 58 wp_update_post( array( 59 'ID' => $this->post_id,60 'post_date' => $time, 61 'post_date_gmt' => get_gmt_from_date( $time ), 62 'post_name' => 'bar-baz', 63 ) ); 64 65 $permalink = user_trailingslashit( get_permalink( $this->post_id ) );66 67 $this->go_to( $old_permalink ); 68 wp_old_slug_redirect(); 69 $this->assert Equals( $permalink, $this->old_date_redirect_url );66 $old_permalink = user_trailingslashit( get_permalink( post_id ) ); 67 68 $time = '2004-01-03 00:00:00'; 69 wp_update_post( array( 70 'ID' => post_id, 71 'post_date' => $time, 72 'post_date_gmt' => get_gmt_from_date( $time ), 73 'post_name' => 'bar-baz', 74 ) ); 75 76 $permalink = user_trailingslashit( get_permalink( post_id ) ); 77 78 $this->go_to( $old_permalink ); 79 wp_old_slug_redirect(); 80 $this->assert( $permalink, $this->old_date_redirect_url ); 70 81 } 71 82 72 83 public function test_old_date_redirect_attachment() { 73 $file = DIR_TESTDATA . '/images/canola.jpg'; 74 $attachment_id = self::factory()->attachment->create_object( $file, $this->post_id, array( 75 'post_mime_type' => 'image/jpeg', 76 'post_name' => 'my-attachment', 77 ) ); 78 79 $old_permalink = get_attachment_link( $attachment_id ); 80 81 $time = '2004-01-03 00:00:00'; 82 wp_update_post( array( 83 'ID' => $this->post_id, 84 $old_permalink = get_attachment_link( self::$attachment_id ); 85 86 $time = '2004-01-03 00:00:00'; 87 wp_update_post( array( 88 'ID' => self::$post_id, 84 89 'post_date' => $time, 85 90 'post_date_gmt' => get_gmt_from_date( $time ), … … 91 96 $this->assertQueryTrue( 'is_attachment', 'is_singular', 'is_single' ); 92 97 93 $old_permalink = get_attachment_link( $attachment_id );94 95 wp_update_post( array( 96 'ID' => $attachment_id,98 $old_permalink = get_attachment_link( $attachment_id ); 99 100 wp_update_post( array( 101 'ID' => $attachment_id, 97 102 'post_name' => 'the-attachment', 98 103 ) ); 99 104 100 $permalink = user_trailingslashit( trailingslashit( get_permalink( $this->post_id ) ) . 'the-attachment' );101 102 $this->go_to( $old_permalink ); 103 wp_old_slug_redirect(); 104 $this->assert Equals( $permalink, $this->old_date_redirect_url );105 $permalink = user_trailingslashit( trailingslashit( get_permalink( post_id ) ) . 'the-attachment' ); 106 107 $this->go_to( $old_permalink ); 108 wp_old_slug_redirect(); 109 $this->assert( $permalink, $this->old_date_redirect_url ); 105 110 } 106 111 107 112 public function test_old_date_slug_redirect_attachment() { 108 $file = DIR_TESTDATA . '/images/canola.jpg'; 109 $attachment_id = self::factory()->attachment->create_object( $file, $this->post_id, array( 110 'post_mime_type' => 'image/jpeg', 111 'post_name' => 'my-attachment', 112 ) ); 113 114 $old_permalink = get_attachment_link( $attachment_id ); 115 116 $time = '2004-01-03 00:00:00'; 117 wp_update_post( array( 118 'ID' => $this->post_id, 113 $old_permalink = get_attachment_link( self::$attachment_id ); 114 115 $time = '2004-01-03 00:00:00'; 116 wp_update_post( array( 117 'ID' => self::$post_id, 119 118 'post_date' => $time, 120 119 'post_date_gmt' => get_gmt_from_date( $time ), … … 127 126 $this->assertQueryTrue( 'is_attachment', 'is_singular', 'is_single' ); 128 127 129 $old_permalink = get_attachment_link( $attachment_id );130 131 wp_update_post( array( 132 'ID' => $attachment_id,128 $old_permalink = get_attachment_link( $attachment_id ); 129 130 wp_update_post( array( 131 'ID' => $attachment_id, 133 132 'post_name' => 'the-attachment', 134 133 ) ); 135 134 136 $permalink = user_trailingslashit( trailingslashit( get_permalink( $this->post_id ) ) . 'the-attachment' );137 138 $this->go_to( $old_permalink ); 139 wp_old_slug_redirect(); 140 $this->assert Equals( $permalink, $this->old_date_redirect_url );135 $permalink = user_trailingslashit( trailingslashit( get_permalink( post_id ) ) . 'the-attachment' ); 136 137 $this->go_to( $old_permalink ); 138 wp_old_slug_redirect(); 139 $this->assert( $permalink, $this->old_date_redirect_url ); 141 140 } 142 141 143 142 public function test_old_date_redirect_paged() { 144 143 wp_update_post( array( 145 'ID' => $this->post_id,144 'ID' => post_id, 146 145 'post_content' => 'Test<!--nextpage-->Test', 147 146 ) ); 148 147 149 $old_permalink = user_trailingslashit( trailingslashit( get_permalink( $this->post_id ) ) . 'page/2' );150 151 $time = '2004-01-03 00:00:00'; 152 wp_update_post( array( 153 'ID' => $this->post_id,154 'post_date' => $time, 155 'post_date_gmt' => get_gmt_from_date( $time ), 156 ) ); 157 158 $permalink = user_trailingslashit( trailingslashit( get_permalink( $this->post_id ) ) . 'page/2' );159 160 $this->go_to( $old_permalink ); 161 wp_old_slug_redirect(); 162 $this->assert Equals( $permalink, $this->old_date_redirect_url );148 $old_permalink = user_trailingslashit( trailingslashit( get_permalink( post_id ) ) . 'page/2' ); 149 150 $time = '2004-01-03 00:00:00'; 151 wp_update_post( array( 152 'ID' => post_id, 153 'post_date' => $time, 154 'post_date_gmt' => get_gmt_from_date( $time ), 155 ) ); 156 157 $permalink = user_trailingslashit( trailingslashit( get_permalink( post_id ) ) . 'page/2' ); 158 159 $this->go_to( $old_permalink ); 160 wp_old_slug_redirect(); 161 $this->assert( $permalink, $this->old_date_redirect_url ); 163 162 } 164 163 165 164 public function test_old_date_slug_redirect_paged() { 166 165 wp_update_post( array( 167 'ID' => $this->post_id,166 'ID' => post_id, 168 167 'post_content' => 'Test<!--nextpage-->Test', 169 168 ) ); 170 169 171 $old_permalink = user_trailingslashit( trailingslashit( get_permalink( $this->post_id ) ) . 'page/2' );170 $old_permalink = user_trailingslashit( trailingslashit( get_permalink( post_id ) ) . 'page/2' ); 172 171 173 172 $time = '2004-01-04 12:00:00'; 174 173 wp_update_post( array( 175 'ID' => $this->post_id,176 'post_date' => $time, 177 'post_date_gmt' => get_gmt_from_date( $time ), 178 'post_name' => 'bar-baz', 179 ) ); 180 181 $permalink = user_trailingslashit( trailingslashit( get_permalink( $this->post_id ) ) . 'page/2' );182 183 $this->go_to( $old_permalink ); 184 wp_old_slug_redirect(); 185 $this->assert Equals( $permalink, $this->old_date_redirect_url );174 'ID' => post_id, 175 'post_date' => $time, 176 'post_date_gmt' => get_gmt_from_date( $time ), 177 'post_name' => 'bar-baz', 178 ) ); 179 180 $permalink = user_trailingslashit( trailingslashit( get_permalink( post_id ) ) . 'page/2' ); 181 182 $this->go_to( $old_permalink ); 183 wp_old_slug_redirect(); 184 $this->assert( $permalink, $this->old_date_redirect_url ); 186 185 } 187 186 188 187 public function test_old_date_slug_doesnt_redirect_when_reused() { 189 $old_permalink = user_trailingslashit( get_permalink( $this->post_id ) );188 $old_permalink = user_trailingslashit( get_permalink( post_id ) ); 190 189 191 190 $time = '2004-01-04 12:00:00'; 192 191 wp_update_post( array( 193 'ID' => $this->post_id,192 'ID' => post_id, 194 193 'post_date' => $time, 195 194 'post_date_gmt' => get_gmt_from_date( $time ), … … 204 203 $permalink = user_trailingslashit( get_permalink( $new_post_id ) ); 205 204 206 $this->assert Equals( $old_permalink, $permalink );205 $this->assert( $old_permalink, $permalink ); 207 206 208 207 $this->go_to( $old_permalink );
Note: See TracChangeset
for help on using the changeset viewer.