WordPress.org

Make WordPress Core

Ticket #19744: url-postid-with-post-type.diff

File url-postid-with-post-type.diff, 1.3 KB (added by wonderboymusic, 9 years ago)
  • wp-includes/rewrite.php

     
    292292
    293293        // Check to see if we are using rewrite rules
    294294        $rewrite = $wp_rewrite->wp_rewrite_rules();
    295 
     295       
    296296        // Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options
    297297        if ( empty($rewrite) )
    298298                return 0;
     
    332332
    333333        $request = $url;
    334334
     335        $post_type_query_vars = array();
     336        foreach ( $GLOBALS['wp_post_types'] as $post_type => $t )
     337                if ( $t->query_var )
     338                        $post_type_query_vars[$t->query_var] = $post_type;     
     339       
    335340        // Look for matches.
    336341        $request_match = $request;
    337342        foreach ( (array)$rewrite as $match => $query) {
     
    361366                        parse_str($query, $query_vars);
    362367                        $query = array();
    363368                        foreach ( (array) $query_vars as $key => $value ) {
    364                                 if ( in_array($key, $wp->public_query_vars) )
     369                                if ( in_array($key, $wp->public_query_vars) ) {
    365370                                        $query[$key] = $value;
     371                                        if ( isset( $post_type_query_vars[$key] ) ) {
     372                                                $query['post_type'] = $post_type_query_vars[$key];
     373                                                $query['name'] = $value;
     374                                        }                                       
     375                                }
    366376                        }
    367 
     377                       
    368378                        // Do the query
    369379                        $query = new WP_Query($query);
    370380                        if ( !empty($query->posts) && $query->is_singular )