Make WordPress Core

Ticket #1230: custom_fields_patch.txt

File custom_fields_patch.txt, 3.9 KB (added by yourcelf, 20 years ago)
Line 
1Index: wp-blog-header.php
2===================================================================
3--- wp-blog-header.php  (revision 2526)
4+++ wp-blog-header.php  (working copy)
5@@ -85,7 +85,7 @@
6        }
7  }
8 
9-$wpvarstoreset = array('m','p','posts','w', 'cat','withcomments','s','search','exact', 'sentence', 'debug', 'calendar','page','paged','more','tb', 'pb','author','order','orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup');
10+$wpvarstoreset = array('m','p','posts','w', 'cat','withcomments','s','search','exact', 'sentence', 'debug', 'calendar','page','paged','more','tb', 'pb','author','order','orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup','custom_key','custom_val');
11 
12 $wpvarstoreset = apply_filters('query_vars', $wpvarstoreset);
13 
14Index: wp-includes/classes.php
15===================================================================
16--- wp-includes/classes.php     (revision 2526)
17+++ wp-includes/classes.php     (working copy)
18@@ -21,6 +21,8 @@
19        var $is_time = false;
20        var $is_author = false;
21        var $is_category = false;
22+       var $is_customkey = false;
23+       var $is_customval = false;
24        var $is_search = false;
25        var $is_feed = false;
26        var $is_trackback = false;
27@@ -40,6 +42,8 @@
28                $this->is_time = false;
29                $this->is_author = false;
30                $this->is_category = false;
31+               $this->is_customkey = false;
32+               $this->is_customval = false;
33                $this->is_search = false;
34                $this->is_feed = false;
35                $this->is_trackback = false;
36@@ -170,6 +174,14 @@
37                        if ( ($this->is_date || $this->is_author || $this->is_category)) {
38                                $this->is_archive = true;
39                        }
40+
41+                       if ('' != $qv['custom_key']) {
42+                               $this->is_customkey = true;
43+                       }
44+
45+                       if ('' != $qv['custom_val']) {
46+                               $this->is_customval = true;
47+                       }
48                }
49 
50                if ('' != $qv['feed']) {
51@@ -416,6 +428,39 @@
52                        $whichcat .= ")";
53                }
54 
55+               // custom_key/custom_val stuff
56+
57+        if ('' != $q['custom_key'] || '' != $q['custom_val']) {
58+            // can only add join statement once, so custom_key and custom_val are combined in one conditional.
59+            if (stristr($q['custom_key'],'/')) {
60+                $q['custom_key'] = explode('/',$q['custom_key']);
61+                if ($q['custom_key'][count($q['custom_key'])-1]) {
62+                    $q['custom_key'] = $q['custom_key'][count($q['custom_key'])-1]; // no trailing slash
63+                } else {
64+                    $q['custom_key'] = $q['custom_key'][count($q['custom_key'])-2]; // there was a trailling slash
65+                }
66+            }
67+            if (stristr($q['custom_val'],'/')) {
68+                $q['custom_val'] = explode('/',$q['custom_val']);
69+                if ($q['custom_val'][count($q['custom_val'])-1]) {
70+                    $q['custom_val'] = $q['custom_val'][count($q['custom_val'])-1]; // no trailing slash
71+                } else {
72+                    $q['custom_val'] = $q['custom_val'][count($q['custom_val'])-2]; // there was a trailling slash
73+                }
74+            }
75+            $q['custom_key'] = sanitize_title($q['custom_key']);
76+            $q['custom_val'] = sanitize_title($q['custom_val']);
77+            $tables .= ", $wpdb->postmeta";
78+            $join .= " LEFT JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) ";
79+            if ('' != $q['custom_key']) {             
80+                $where .= " AND ($wpdb->postmeta.meta_key = '" . $q['custom_key'] . "')";
81+            }
82+            if ('' != $q['custom_val']) {
83+                $where .= " AND ($wpdb->postmeta.meta_value = '" . $q['custom_val'] . "')";           
84+            }
85+        }
86+
87+
88                // Author/user stuff
89 
90                if ((empty($q['author'])) || ($q['author'] == '0')) {
91@@ -1290,4 +1335,4 @@
92     $wp_rewrite = new WP_Rewrite();
93 }
94 
95-?>
96\ No newline at end of file
97+?>