@@ -2033,6 +2033,7 @@
if ( !empty($q('meta_key')) ) ( $allowed_keys() = $q('meta_key'); $allowed_keys() = 'meta_value'; + $allowed_keys() = 'meta_value_num'; ) $q('orderby') = urldecode($q('orderby')); $q('orderby') = addslashes_gpc($q('orderby'));
@@ -2056,6 +2057,9 @@
case 'meta_value': $orderby = "$wpdb->postmeta.meta_value"; break; + case 'meta_value_num': + $orderby = "$wpdb->postmeta.meta_value+0"; + break; default: $orderby = "$wpdb->posts.post_" . $orderby; )
यह एक कोर फाइल के लिए एक सीधा संपादन है: /wp-includes/query.php नोट उपरोक्त कोड में प्लस संकेत जोड़ने के लिए नई लाइनों को इंगित करते हैं ।
लेखक नोट्स:
एक क्लाइंट चाहता था कि मैं "गाइड रैंक" नामक एक कस्टम फ़ील्ड सेट करूँ, जिससे उन्हें बार्स की एक सूची के लिए # 1 - 20 असाइन करने की अनुमति मिले, जिसके बारे में वे पोस्ट कर रहे थे।
पोस्ट क्वेरी चलाने के बाद मैंने पाया कि मेटा_वेल्यू को एक स्ट्रिंग के रूप में माना जा रहा था और इस तरह के क्रम को उछाला गया था:
उदा। 1, 10, 2, 3css-tricks.comC 7, 8, 9
"प्राकृतिक क्रमबद्ध क्रम" का उपयोग करने के लिए आपको वर्डप्रेस / MySQL प्राप्त करने के लिए आपको बस फ़ील्ड नाम के लिए +0 लागू करने की आवश्यकता है और इसे एक नंबर के रूप में माना जाएगा (उदाहरण। meta_value + 0)।
ताकि मौजूदा व्यवहार बाधित न हो, मैंने अभी नया प्रकार 'meta_value_num' जोड़ा है।
मेरी क्वेरी लाइन अब इस तरह दिखती है:
$guide_posts = new WP_Query("cat=12&meta_key=guide_rank&orderby=meta_value_num&order=ASC&showposts=10");
कौन सा रिटर्न: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
यह वर्डप्रेस ट्रंक में शामिल करने के लिए है - इसलिए उम्मीद है कि एक बार आवेदन करने के बाद फ़ाइल को मैन्युअल रूप से संपादित करने की कोई आवश्यकता नहीं होनी चाहिए।