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

File url-postid-with-post-type.diff, 1.3 KB (added by wonderboymusic, 7 months ago)
Line 
1Index: wp-includes/rewrite.php
2===================================================================
3--- wp-includes/rewrite.php     (revision 22355)
4+++ wp-includes/rewrite.php     (working copy)
5@@ -292,7 +292,7 @@
6 
7        // Check to see if we are using rewrite rules
8        $rewrite = $wp_rewrite->wp_rewrite_rules();
9-
10+       
11        // Not using rewrite rules, and 'p=N' and 'page_id=N' methods failed, so we're out of options
12        if ( empty($rewrite) )
13                return 0;
14@@ -332,6 +332,11 @@
15 
16        $request = $url;
17 
18+       $post_type_query_vars = array();
19+       foreach ( $GLOBALS['wp_post_types'] as $post_type => $t )
20+               if ( $t->query_var )
21+                       $post_type_query_vars[$t->query_var] = $post_type;     
22+       
23        // Look for matches.
24        $request_match = $request;
25        foreach ( (array)$rewrite as $match => $query) {
26@@ -361,10 +366,15 @@
27                        parse_str($query, $query_vars);
28                        $query = array();
29                        foreach ( (array) $query_vars as $key => $value ) {
30-                               if ( in_array($key, $wp->public_query_vars) )
31+                               if ( in_array($key, $wp->public_query_vars) ) {
32                                        $query[$key] = $value;
33+                                       if ( isset( $post_type_query_vars[$key] ) ) {
34+                                               $query['post_type'] = $post_type_query_vars[$key];
35+                                               $query['name'] = $value;
36+                                       }                                       
37+                               }
38                        }
39-
40+                       
41                        // Do the query
42                        $query = new WP_Query($query);
43                        if ( !empty($query->posts) && $query->is_singular )