WordPress.org

Make WordPress Core

Ticket #6516: 6516.diff

File 6516.diff, 2.9 KB (added by DD32, 9 years ago)
  • wp-includes/canonical.php

     
    9191                                $redirect_url = trailingslashit( $redirect_url ) . user_trailingslashit( get_query_var( 'page' ), 'single_paged' );
    9292                                $redirect['query'] = remove_query_arg( 'page', $redirect['query'] );
    9393                        }
     94                } elseif ( is_single() && !empty($_GET['name']) ) {
     95                        $_post = get_posts( array( 'name' => get_query_var('name') ) );
     96                        if ( $_post && $redirect_url = get_permalink( $_post[0]->ID ) )
     97                                $redirect['query'] = remove_query_arg('name', $redirect['query']);
    9498                } elseif ( is_page() && !empty($_GET['page_id']) && ! $redirect_url ) {
    9599                        if ( $redirect_url = get_permalink(get_query_var('page_id')) )
    96100                                $redirect['query'] = remove_query_arg('page_id', $redirect['query']);
     101                } elseif ( is_page() && !empty($_GET['pagename']) ) {
     102                        $_post = get_posts( array( 'pagename' => get_query_var('pagename') ) );
     103                        if ( $_post && $redirect_url = get_permalink( $_post[0]->ID ) )
     104                                $redirect['query'] = remove_query_arg('pagename', $redirect['query']);
    97105                } elseif ( !empty($_GET['m']) && ( is_year() || is_month() || is_day() ) ) {
    98106                        $m = get_query_var('m');
    99107                        switch ( strlen($m) ) {
  • wp-includes/query.php

     
    16691671                if ( $q['day'] )
    16701672                        $where .= " AND DAYOFMONTH($wpdb->posts.post_date)='" . $q['day'] . "'";
    16711673
    1672                 if ('' != $q['name']) {
    1673                         $q['name'] = sanitize_title($q['name']);
    1674                         $where .= " AND $wpdb->posts.post_name = '" . $q['name'] . "'";
    1675                 } else if ('' != $q['pagename']) {
     1674                if ('' != $q['pagename']) {
    16761675                        if ( isset($this->queried_object_id) )
    16771676                                $reqpage = $this->queried_object_id;
    16781677                        else {
     
    16891688                                $page_paths = '/' . trim($q['pagename'], '/');
    16901689                                $q['pagename'] = sanitize_title(basename($page_paths));
    16911690                                $q['name'] = $q['pagename'];
    1692                                 $where .= " AND ($wpdb->posts.ID = '$reqpage')";
     1691                                if ( !empty($reqpage) )
     1692                                        $where .= " AND $wpdb->posts.ID = '$reqpage'";
    16931693                                $reqpage_obj = get_page($reqpage);
    16941694                                if ( is_object($reqpage_obj) && 'attachment' == $reqpage_obj->post_type ) {
    16951695                                        $this->is_attachment = true;
     
    17021702                        $attach_paths = '/' . trim($q['attachment'], '/');
    17031703                        $q['attachment'] = sanitize_title(basename($attach_paths));
    17041704                        $q['name'] = $q['attachment'];
    1705                         $where .= " AND $wpdb->posts.post_name = '" . $q['attachment'] . "'";
    17061705                }
    17071706
     1707                if ('' != $q['name']) {
     1708                        $q['name'] = sanitize_title($q['name']);
     1709                        $where .= " AND $wpdb->posts.post_name = '" . $q['name'] . "'";
     1710                }
     1711
    17081712                if ( $q['w'] )
    17091713                        $where .= " AND WEEK($wpdb->posts.post_date, 1)='" . $q['w'] . "'";
    17101714