WordPress.org

Make WordPress Core

Ticket #16687: no_verbose_ver2.diff

File no_verbose_ver2.diff, 3.5 KB (added by Otto42, 9 years ago)

Take two - fixes problems with feeds, refreshed for trunk

  • wp-includes/class-wp.php

     
    200200
    201201                                        if ( preg_match("#^$match#", $request_match, $matches) ||
    202202                                                preg_match("#^$match#", urldecode($request_match), $matches) ) {
     203                                               
     204                                                if ( $wp_rewrite->use_verbose_page_rules == true && preg_match('/pagename=\$([^&\[]+)\[([0-9]+)\]/',$query,$varmatch) ) {
     205                                                        // this is a verbose page match, lets check to be sure about it
     206                                                        if ( ! get_page_by_path(${$varmatch[1]}[$varmatch[2]]) )
     207                                                                continue;
     208                                                }
     209
    203210                                                // Got a match.
    204211                                                $this->matched_rule = $match;
    205212                                                break;
  • wp-includes/rewrite.php

     
    306306        // Look for matches.
    307307        $request_match = $request;
    308308        foreach ( (array)$rewrite as $match => $query) {
     309
     310                if ( $wp_rewrite->use_verbose_page_rules == true && preg_match('/pagename=\$([^&\[]+)\[([0-9]+)\]/',$query,$varmatch) ) {
     311                        // this is a verbose page match, lets check to be sure about it
     312                        if ( ! get_page_by_path(${$varmatch[1]}[$varmatch[2]]) )
     313                        continue;
     314                }
     315
    309316                // If the requesting file is the anchor of the match, prepend it
    310317                // to the path info.
    311318                if ( !empty($url) && ($url != $request) && (strpos($match, $url) === 0) )
     
    813820                $rewrite_rules = array();
    814821                $page_structure = $this->get_page_permastruct();
    815822
    816                 if ( ! $this->use_verbose_page_rules ) {
    817                         $this->add_rewrite_tag('%pagename%', "(.+?)", 'pagename=');
    818                         $rewrite_rules = array_merge($rewrite_rules, $this->generate_rewrite_rules($page_structure, EP_PAGES));
    819                         return $rewrite_rules;
    820                 }
    821 
    822                 $page_uris = $this->page_uri_index();
    823                 $uris = $page_uris[0];
    824                 $attachment_uris = $page_uris[1];
    825 
    826                 if ( is_array( $attachment_uris ) ) {
    827                         foreach ( $attachment_uris as $uri => $pagename ) {
    828                                 $this->add_rewrite_tag('%pagename%', "($uri)", 'attachment=');
    829                                 $rewrite_rules = array_merge($rewrite_rules, $this->generate_rewrite_rules($page_structure, EP_PAGES));
    830                         }
    831                 }
    832                 if ( is_array( $uris ) ) {
    833                         foreach ( $uris as $uri => $pagename ) {
    834                                 $this->add_rewrite_tag('%pagename%', "($uri)", 'pagename=');
    835                                 $rewrite_rules = array_merge($rewrite_rules, $this->generate_rewrite_rules($page_structure, EP_PAGES));
    836                         }
    837                 }
    838 
     823                $this->add_rewrite_tag('%pagename%', "(.+?)", 'pagename=');
     824                $rewrite_rules = array_merge($rewrite_rules, $this->generate_rewrite_rules($page_structure, EP_PAGES));
    839825                return $rewrite_rules;
    840826        }
    841827
     
    15581544
    15591545                // Put them together.
    15601546                if ( $this->use_verbose_page_rules )
    1561                         $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $default_feeds, $registration_pages, $page_rewrite, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $post_rewrite, $this->extra_rules);
     1547                        $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $default_feeds, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $page_rewrite, $post_rewrite, $this->extra_rules);
    15621548                else
    15631549                        $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $default_feeds, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this->extra_rules);
    15641550