प्रत्येक पोस्ट मेटा कुंजी में कई मान हो सकते हैं। तो आप एक सरणी के रूप में डिफ़ॉल्ट रूप से मान प्राप्त करते हैं; पहली प्रविष्टि ( 0
) सबसे पुरानी है।
get_post_custom()
अपने मूल्यों के साथ सभी मेटा कुंजी को लाते हैं। आप अपने कोड को सरल बना सकते हैं:
$price = get_post_meta( $post->ID, 'price', TRUE );
$comake = get_post_meta( $post->ID, 'coMake', TRUE );
जब अंतिम पैरामीटर get_post_meta()
है TRUE
, तो वर्डप्रेस एकल मान लौटाएगा: दिए गए कुंजी के लिए पोस्ट मेटा मूल्य में पहली प्रविष्टि।
बैकग्राउंड में उस पोस्ट आईडी के लिए सभी मेटा मानों get_post_meta()
को लाने और कैश करने के लिए पहली कॉल होगी , इसलिए बाद में कॉल करने पर अतिरिक्त डेटाबेस प्रश्नों का परिणाम नहीं होगा।
एक उदाहरण
मान लीजिए, हम एक पोस्ट मेटा कुंजी नामित करते हैं color
और इसे एक पोस्ट के लिए तीन अलग-अलग मानों से भरते हैं । फिर हम एक कुंजी के साथ भी ऐसा ही करते हैं age
।
add_action( 'wp_loaded', function() {
foreach ( array ( 'blue', 'red', 'yellow' ) as $color )
add_post_meta( 561, 'color', $color, FALSE );
foreach ( array ( '14', '40', '104' ) as $age )
add_post_meta( 561, 'age', $age, FALSE );
});
अंतिम पैरामीटर FALSE
वर्डप्रेस को इस मेटा कुंजी को अद्वितीय नहीं बनाने के लिए कहता है - लेकिन इसके बजाय एक कुंजी के लिए कई मानों को अनुमति देने के लिए।
हमारी postmeta
तालिका में परिणामी संरचना इस तरह दिखाई देगी:
प्रत्येक पंक्ति में एक अद्वितीय है meta_id
, लेकिन प्रत्येक post_id
में कई meta_key
s हो सकते हैं , और प्रत्येक meta_key
में कई meta_value
s हो सकते हैं ।
अब 561 पोस्ट के लिए सभी कस्टम मान लाते हैं:
add_action( 'shutdown', function(){
$custom = get_post_custom( 561 );
print '<pre>' . esc_html( var_export( $custom, TRUE ) ) . '</pre>';
});
परिणाम:
array (
'_edit_last' =>
array (
0 => '1',
),
'_edit_lock' =>
array (
0 => '1367617428:1',
),
'color' =>
array (
0 => 'blue',
1 => 'red',
2 => 'yellow',
),
'age' =>
array (
0 => '14',
1 => '40',
2 => '104',
),
)
_edit_last
और _edit_lock
वर्डप्रेस इंटर्नल्स हैं, हम उस समय के लिए इसे अनदेखा करते हैं। बस ध्यान दें, हमें इन मूल्यों को एक सरणी भी मिलती है, हालांकि सिर्फ एक मूल्य है।
color
और age
सभी पोस्ट मेटा मानों की तरह सरणियाँ हैं।
$custom['color'][0]
है blue
।
अब हम सिर्फ रंग लाते हैं get_post_meta()
:
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color' );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
परिणाम:
array (
0 => 'blue',
1 => 'red',
2 => 'yellow',
)
हमें यहां अपने मेटा मूल्यों का सिर्फ एक टुकड़ा मिलता है। $color[0]
अभी भी है blue
। पर्दे के पीछे, वर्डप्रेस पहले से ही सभी कस्टम मूल्यों को प्राप्त कर चुका है , इसलिए age
कैश के लिए अगली हिट सेवा की जाएगी।
प्रदर्शन के मामले में get_post_custom()
और get_post_meta()
बराबर हैं।
अंतिम प्रयास: get_post_meta()
एकल मूल्य के रूप में रंग प्राप्त करें ।
add_action( 'shutdown', function(){
$color = get_post_meta( 561, 'color', TRUE );
print '<pre>' . esc_html( var_export( $color, TRUE ) ) . '</pre>';
});
परिणाम: blue
।
वर्डप्रेस ने आपके कोड में क्या किया है: यह सरणी कुंजी ले लिया है 0
और एक स्ट्रिंग के रूप में मान लौटा दिया है।
यह सबसे पठनीय विकल्प है, इसे कोड लिखने के लिए उपयोग करें जो समझने में आसान है।