एक संभव दृष्टिकोण WPDB वर्ग में सहायक विधियों में से एक का उपयोग अधिक परिष्कृत मेटा आधारित क्वेरी करने के लिए होगा। हालांकि, इनमें से कुछ कार्यों का उपयोग करने के लिए चेतावनी यह है कि आप आमतौर पर डेटा का एक साधारण सरणी वापस नहीं लेते हैं और आमतौर पर ऑब्जेक्ट गुणों के लिए अनावश्यक संदर्भ बनाना पड़ता है, भले ही आप केवल एक कॉलम या पंक्ति के लिए कॉल कर रहे हों।
बेशक, सभी फ़ंक्शन एक और समान नहीं हैं, और एक उद्देश्यपूर्ण उल्लेख WPDB विधि के लिए निकलता है , get_col
जो डेटा के लिए सरल फ्लैट सरणी देता है , जिसके लिए मैं विशेष रूप से उल्लेख करता हूं क्योंकि निम्नलिखित उदाहरण इस पद्धति पर कॉल करेंगे ।
वर्डप्रेस - WPDB डेटा के एक कॉलम का चयन
$ wpdb-> get_col ()
यहां एक उदाहरण फ़ंक्शन है जो चुने हुए पोस्ट प्रकार, पद की स्थिति और विशिष्ट मेटा कुंजी (या कम तकनीकी रूप से मन लगाने के लिए कस्टम फ़ील्ड) के सभी पदों के लिए डेटाबेस पर सवाल उठाता है।
function get_meta_values( $key = '', $type = 'post', $status = 'publish' ) {
global $wpdb;
if( empty( $key ) )
return;
$r = $wpdb->get_col( $wpdb->prepare( "
SELECT pm.meta_value FROM {$wpdb->postmeta} pm
LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
WHERE pm.meta_key = %s
AND p.post_status = %s
AND p.post_type = %s
", $key, $status, $type ) );
return $r;
}
उदाहरण के लिए, यदि आप यह जानना चाहते हैं कि किन पोस्टों में रेटिंग की मेटा कुंजी है , पोस्ट प्रकार की फिल्मों के लिए और आप उस जानकारी को एक चर के अंदर संग्रहीत करना चाहते हैं, तो ऐसी कॉल का एक उदाहरण होगा।
$movie_ratings = get_meta_values( 'rating', 'movies' );
यदि आप उस डेटा को स्क्रीन पर प्रिंट करने के अलावा और कुछ नहीं करना चाहते हैं, तो PHP का फंक्शन फ़ंक्शन उस सरल सरणी को डेटा की रेखाओं में विभाजित कर सकता है।
// Print the meta values seperate by a line break
echo implode( '<br />', get_meta_values( 'YOURKEY' ));
आप लौटे डेटा का उपयोग यह जानने के लिए भी कर सकते हैं कि लौटाए गए डेटा पर एक साधारण लूप बनाकर और कितने काउंट्स हैं, उदाहरण के लिए, काउंट की एक सरणी का निर्माण करके।
$movie_ratings = get_meta_values( 'rating', 'movies' );
if( !empty( $movie_ratings ) ) {
$num_of_ratings = array();
foreach( $movie_ratings as $meta_value )
$num_of_ratings[$meta_value] = ( isset( $num_of_ratings[$meta_value] ) ) ? $num_of_ratings[$meta_value] + 1 : 1;
}
/*
Result:
Array(
[5] => 10
[9] => 2
)
// ie. there are 10 movie posts with a rating of 5 and 2 movie posts with a rating of 9.
*/
इस तर्क को विभिन्न प्रकार के डेटा पर लागू किया जा सकता है, और विभिन्न तरीकों से किसी भी संख्या में काम करने के लिए बढ़ाया जा सकता है। इसलिए मुझे आशा है कि मेरे उदाहरण सहायक और सरल रूप से अनुसरण करने के लिए पर्याप्त हैं।