WordPress.org

Make WordPress Core

Ticket #10935: 10935.4.diff

File 10935.4.diff, 2.2 KB (added by SergeyBiryukov, 2 years ago)
  • wp-includes/canonical.php

     
    101101                        } 
    102102                } 
    103103 
     104                if ( get_query_var( 'day' ) && get_query_var( 'monthnum' ) && get_query_var( 'year' ) ) { 
     105                        $year  = get_query_var( 'year' ); 
     106                        $month = get_query_var( 'monthnum' ); 
     107                        $day   = get_query_var( 'day' ); 
     108                        $date  = sprintf( '%04d-%02d-%02d', $year, $month, $day ); 
     109                        if ( ! wp_checkdate( $month, $day, $year, $date ) ) { 
     110                                $redirect_url = get_month_link( $year, $month ); 
     111                                $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'year', 'monthnum', 'day' ), $redirect_url ); 
     112                        } 
     113                } elseif ( get_query_var( 'monthnum' ) && get_query_var( 'year' ) && 12 < get_query_var( 'monthnum' ) ) { 
     114                        $redirect_url = get_year_link( get_query_var( 'year' ) ); 
     115                        $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'year', 'monthnum' ), $redirect_url ); 
     116                } 
     117 
    104118                if ( ! $redirect_url ) { 
    105119                        if ( $redirect_url = redirect_guess_404_permalink() ) { 
    106120                                $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'page', 'feed', 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type' ), $redirect_url ); 
  • wp-includes/query.php

     
    15011501 
    15021502                        if ( $qv['day'] ) { 
    15031503                                if ( ! $this->is_date ) { 
    1504                                         $this->is_day = true; 
    1505                                         $this->is_date = true; 
     1504                                        $date = sprintf( '%04d-%02d-%02d', $qv['year'], $qv['monthnum'], $qv['day'] ); 
     1505                                        if ( $qv['monthnum'] && $qv['year'] && ! wp_checkdate( $qv['monthnum'], $qv['day'], $qv['year'], $date ) ) { 
     1506                                                $qv['error'] = '404'; 
     1507                                        } else { 
     1508                                                $this->is_day = true; 
     1509                                                $this->is_date = true; 
     1510                                        } 
    15061511                                } 
    15071512                        } 
    15081513 
    15091514                        if ( $qv['monthnum'] ) { 
    15101515                                if ( ! $this->is_date ) { 
    1511                                         $this->is_month = true; 
    1512                                         $this->is_date = true; 
     1516                                        if ( 12 < $qv['monthnum'] ) { 
     1517                                                $qv['error'] = '404'; 
     1518                                        } else { 
     1519                                                $this->is_month = true; 
     1520                                                $this->is_date = true; 
     1521                                        } 
    15131522                                } 
    15141523                        } 
    15151524