मुझे उनके मेटाडेटा के साथ पदों का एक गुच्छा प्राप्त करने की आवश्यकता है। बेशक आप एक मानक पोस्ट क्वेरी के साथ मेटाडेटा प्राप्त नहीं कर सकते हैं, इसलिए आपको आमतौर पर get_post_custom()
प्रत्येक पोस्ट के लिए करना होगा ।
मैं इस तरह से एक कस्टम क्वेरी के साथ कोशिश कर रहा हूँ:
$results = $wpdb->get_results("
SELECT p.ID,
p.post_title,
pm1.meta_value AS first_field,
pm2.meta_value AS second_field,
pm3.meta_value AS third_field
FROM $wpdb->posts p LEFT JOIN $wpdb->postmeta pm1 ON (
pm1.post_id = p.ID AND
pm1.meta_key = 'first_field_key'
) LEFT JOIN $wpdb->postmeta pm2 ON (
pm2.post_id = p.ID AND
pm2.meta_key = 'second_field_key'
) LEFT JOIN $wpdb->postmeta pm3 ON (
pm3.post_id = p.ID AND
pm3.meta_key = 'third_field_key'
)
WHERE post_status = 'publish'
");
काम करने लगता है। यदि आप एक तरह से उन मेटा फ़ील्ड्स का उपयोग करते हैं जो एक ही पोस्ट पर इसके लिए कई मेटा मानों की अनुमति देता है, तो यह यात्रा करता है। मैं ऐसा करने के लिए जुड़ने के बारे में सोच भी नहीं सकता।
तो, प्रश्न 1: क्या बहु-मूल्य वाले मेटा फ़ील्ड में शामिल होने के लिए कोई जोड़, उप-क्वेरी या कुछ भी है?
लेकिन सवाल 2: क्या यह इसके लायक है? postmeta
2-क्वेरी दृष्टिकोण के बेहतर होने से पहले मैं कितनी टेबल जोड़ता हूं? मैं एक क्वेरी में सभी पोस्ट डेटा को पकड़ सकता था, फिर दूसरे में सभी प्रासंगिक पोस्टमेट को पकड़ सकता था, और PHP में एक परिणाम में पोस्ट डेटा के साथ मेटा को संयोजित कर सकता था। क्या यह एक एकल-अधिक-जटिल एसक्यूएल क्वेरी की तुलना में तेज हो सकता है, अगर यह भी संभव है?
मैं हमेशा सोचता हूं, "डेटाबेस को जितना संभव हो उतना काम दें।" इस पर यकीन नहीं!
get_posts()
, तो get_post_meta()
उनमें से हर एक के लिए? @MannyFleurmond, WP के बिल्ट-इन कैशिंग के बारे में कठिन जानकारी प्राप्त करना कठिन है, लेकिन AFAIK यह आपके अनुरोध के अनुसार सामान को कैश कर देगा। इस डेटा को हड़पने के लिए सर्वर को कॉल एक AJAX कॉल है, और मुझे नहीं लगता कि इससे पहले कुछ और सामान कब्जाने वाला होगा।