WordPress.org

Make WordPress Core

Ticket #16687: 16687.diff

File 16687.diff, 5.5 KB (added by dd32, 3 years ago)
  • wp-includes/class-wp.php

     
    1515         * @access public 
    1616         * @var array 
    1717         */ 
    18         var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'debug', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type'); 
     18        var $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'debug', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'post_or_root_page'); 
    1919 
    2020        /** 
    2121         * Private query variables. 
  • wp-includes/post.php

     
    31723172        if ( empty($pages) ) 
    31733173                return $null; 
    31743174 
     3175        if ( 1 == count($pages) ) 
     3176                return get_page($pages[0]->ID, $output, $post_type);             
     3177 
    31753178        foreach ( $pages as $page ) { 
    31763179                $path = '/' . $leaf_path; 
    31773180                $curpage = $page; 
     
    31803183                        $curpage = wp_cache_get( $post_parent, 'posts' ); 
    31813184                        if ( false === $curpage ) 
    31823185                                $curpage = $wpdb->get_row( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE ID = %d and post_type = %s", $post_parent, $post_type ) ); 
     3186                        if ( ! $curpage ) 
     3187                                break; 
    31833188                        $path = '/' . $curpage->post_name . $path; 
    31843189                } 
    31853190 
  • wp-includes/query.php

     
    16341634                        } 
    16351635                } 
    16361636 
     1637                if ( ! empty( $qv['post_or_root_page'] ) ) { 
     1638                        $qv['post_type'] = array( 'post', 'page' ); 
     1639                        $qv['post_parent'] = 0; 
     1640                } 
     1641 
    16371642                if ( !empty($qv['post_type']) ) { 
    16381643                        if ( is_array($qv['post_type']) ) 
    16391644                                $qv['post_type'] = array_map('sanitize_key', $qv['post_type']); 
     
    21062111                                } else { 
    21072112                                        $reqpage = get_page_by_path($q['pagename']); 
    21082113                                } 
    2109                                 if ( !empty($reqpage) ) 
     2114                                if ( !empty($reqpage) ) { 
    21102115                                        $reqpage = $reqpage->ID; 
    2111                                 else 
    2112                                         $reqpage = 0; 
     2116                                } else { 
     2117                                        // Assume it's a post attachment. 
     2118                                        $this->is_attachment = true; 
     2119                                        $post_type = $q['post_type'] = 'attachment'; 
     2120                                        $q['attachment'] = $q['name'] = sanitize_title_for_query( wp_basename( $q['pagename'] ) ); 
     2121                                        $where .= " AND $wpdb->posts.post_name = '" . $q['attachment'] . "'"; 
     2122                                } 
    21132123                        } 
    21142124 
    21152125                        $page_for_posts = get_option('page_for_posts'); 
    2116                         if  ( ('page' != get_option('show_on_front') ) || empty($page_for_posts) || ( $reqpage != $page_for_posts ) ) { 
     2126                        if  ( isset($reqpage) && ( ('page' != get_option('show_on_front') ) || empty($page_for_posts) || ( $reqpage != $page_for_posts ) ) ) { 
    21172127                                $q['pagename'] = sanitize_title_for_query( wp_basename( $q['pagename'] ) ); 
    21182128                                $q['name'] = $q['pagename']; 
    21192129                                $where .= " AND ($wpdb->posts.ID = '$reqpage')"; 
  • wp-includes/rewrite.php

     
    597597         */ 
    598598        var $use_verbose_page_rules = true; 
    599599 
     600        var $use_verbose_attachment_rules = false; 
     601 
    600602        /** 
    601603         * Permalink structure search for preg_replace. 
    602604         * 
     
    14401442                                        $rewrite = array_merge(array($trackbackmatch => $trackbackquery), $rewrite); 
    14411443 
    14421444                                        //add regexes/queries for attachments, attachment trackbacks and so on 
    1443                                         if ( ! $page ) //require <permalink>/attachment/stuff form for pages because of confusion with subpages 
     1445                                        if ( ! $page && ! $this->use_verbose_attachment_rules ) //require <permalink>/attachment/stuff form for pages because of confusion with subpages 
    14441446                                                $rewrite = array_merge($rewrite, array($sub1 => $subquery, $sub1tb => $subtbquery, $sub1feed => $subfeedquery, $sub1feed2 => $subfeedquery, $sub1comment => $subcommentquery)); 
    14451447                                        $rewrite = array_merge(array($sub2 => $subquery, $sub2tb => $subtbquery, $sub2feed => $subfeedquery, $sub2feed2 => $subfeedquery, $sub2comment => $subcommentquery), $rewrite); 
    14461448                                } 
     
    19081910                $this->use_trailing_slashes = ( '/' == substr($this->permalink_structure, -1, 1) ); 
    19091911 
    19101912                // Enable generic rules for pages if permalink structure doesn't begin with a wildcard. 
    1911                 if ( preg_match("/^[^%]*%(?:postname|category|tag|author)%/", $this->permalink_structure) ) 
    1912                          $this->use_verbose_page_rules = true; 
     1913                if ( preg_match("/^[^%]*%(?:category|tag|author)%/", $this->permalink_structure) ) 
     1914                        $this->use_verbose_page_rules = true; 
    19131915                else 
    19141916                        $this->use_verbose_page_rules = false; 
     1917 
     1918                // In the event the permalink structure atarts with /%postname% do a post||page post_type query 
     1919                if ( strpos($this->permalink_structure, '/%postname%') == 0 ) { 
     1920                        $this->add_rewrite_tag('%postname%', "([^/]+)", 'post_or_root_page=1&name='); 
     1921                        $this->use_verbose_attachment_rules = true; 
     1922                } 
    19151923        } 
    19161924 
    19171925        /**