2011-11-04 15 views
9

मैंने कस्टम पोस्ट प्रकार बनाया है। यह वर्डप्रेस डैशबोर्ड में बस ठीक होगा और मैं इसे भी सहेजने में सक्षम हूं। अब मान लें कि यह एक कस्टम पोस्ट प्रकार है जिसमें कुछ तारों और कुछ तिथियों के लिए डेटा शामिल है।कस्टम पोस्ट प्रकारों से कस्टम डेटा कैसे प्रदर्शित करें

मैं इन कस्टम पोस्ट प्रकारों को पुनर्प्राप्त करने में सक्षम होना चाहता हूं (जो मैंने WP_Query का उपयोग करके किया है और पोस्ट_ टाइप को मेरे कस्टम पोस्ट प्रकार के नाम पर निर्दिष्ट करना है)। जब मैं लौटे ऑब्जेक्ट पर print_r को कॉल करता हूं, तो ऑब्जेक्ट में कहीं भी कस्टम डेटा (तार और तिथियां) संग्रहीत नहीं होती हैं। मैं डेटाबेस से इन्हें कैसे पुनर्प्राप्त करूं?

मैंने घंटों तक देखा है और इस डेटा को पुनर्प्राप्त करने के लिए कोई दृष्टिकोण नहीं मिला है।

अनुरोध: यह कैसे डेटा संग्रहीत किया जाता है है:

function update_obituary(){ 
    global $post; 
    update_post_meta($post->ID, "first_name", $_POST["first_name"]); 
    update_post_meta($post->ID, "last_name", $_POST["last_name"]); 
    update_post_meta($post->ID, "birth_date", $_POST["birth_date"]); 
    update_post_meta($post->ID, "death_date", $_POST["death_date"]); 
    update_post_meta($post->ID, "publication_date", $_POST["publication_date"]); 
} 

यह समारोह 'save_post' हुक से जुड़ा हुआ है। संपादन मोड में कस्टम पोस्ट प्रकार के उदाहरण को फिर से खोलने पर डेटा को फिर से चलाया जाएगा। इसका मतलब है कि यह डेटाबेस में संग्रहीत है, है ना?

+0

कृपया कुछ कोड जोड़ें। अतिरिक्त मेटाडेटा कैसे संग्रहीत किया जाता है? –

+0

ने अनुरोध के रूप में कोड जोड़ा। – Prusprus

उत्तर

9

यदि मेटाडेटा प्रकार के पोस्ट संपादित करते समय दिखाता है, तो हाँ, इसे डीबी में सफलतापूर्वक संग्रहीत किया जाना चाहिए।

कस्टम पोस्ट प्रकार के मेटाडेटा को पुनर्प्राप्त करने के लिए दो WP कार्य हैं: get_post_custom_values और get_post_meta। अंतर यह है कि get_post_custom_values गैर-अद्वितीय कस्टम फ़ील्ड तक पहुंच सकता है, यानी एक ही कुंजी से जुड़े एक से अधिक मूल्य वाले लोग। हालांकि आप अद्वितीय क्षेत्रों के लिए इसका उपयोग करना चुन सकते हैं - स्वाद का सवाल।

मान लिया जाये, जो आपकी पोस्ट प्रकार कहा जाता है "मृत्युलेख":

// First lets set some arguments for the query: 
// Optionally, those could of course go directly into the query, 
// especially, if you have no others but post type. 
$args = array(
    'post_type' => 'obituary', 
    'posts_per_page' => 5 
    // Several more arguments could go here. Last one without a comma. 
); 

// Query the posts: 
$obituary_query = new WP_Query($args); 

// Loop through the obituaries: 
while ($obituary_query->have_posts()) : $obituary_query->the_post(); 
    // Echo some markup 
    echo '<p>'; 
    // As with regular posts, you can use all normal display functions, such as 
    the_title(); 
    // Within the loop, you can access custom fields like so: 
    echo get_post_meta($post->ID, 'birth_date', true); 
    // Or like so: 
    $birth_date = get_post_custom_values('birth_date'); 
    echo $birth_date[0]; 
    echo '</p>'; // Markup closing tags. 
endwhile; 

// Reset Post Data 
wp_reset_postdata(); 

सावधानी का एक शब्द, भ्रम से बचने के: get_post_meta में बूलियन बाहर छोड़कर यह एक स्ट्रिंग के बजाय एक सरणी लौट कर देगा। get_post_custom_values हमेशा एक सरणी देता है, यही कारण है कि, उपर्युक्त उदाहरण में, हम $birth_date के बजाय $birth_date[0] को प्रतिबिंबित कर रहे हैं।

इसके अलावा मैं इस समय 100% निश्चित नहीं हूं, चाहे $post->ID उपरोक्त में अपेक्षित कार्य करेगा। यदि नहीं, तो इसे get_the_ID() से बदलें। दोनों को काम करना चाहिए, एक निश्चित रूप से होगा। इसका परीक्षण कर सकता है, लेकिन खुद को समय बचा रहा है ...

पूर्णता के लिए, WP_Query पर कोडेक्स को अधिक क्वेरी तर्क और सही उपयोग के लिए जांचें।

+0

धन्यवाद! यह भी खूब रही! उम्मीद है कि मेरे जैसे अन्य लोग जानकारी ढूंढने की कोशिश कर रहे हैं इस पृष्ठ पर गिरेंगे :) – Prusprus

+0

अच्छा! उत्सुक था कि यह कैसे करें, बहुत उपयोगी उत्तर – Alex

+0

5 साल से अधिक समय के उत्तर पर एक टिप्पणी प्राप्त करने के लिए आश्चर्यचकित। हालांकि इसे फिर से पढ़ना, डब्ल्यूपी एपीआई का यह हिस्सा ज्यादा नहीं बदला - यह जानकारी वास्तव में अभी भी सच है। –

संबंधित मुद्दे