मुझे एक दिलचस्प समस्या है जो मुझे आशा है कि कोई जल्दी से जवाब दे सकता है।
मैंने अपना स्वयं का मेटाबॉक्स बनाया है, जो "MY METABOX CODE" (नीचे दी गई सूची) पर आधारित है, जो कि मैंने "Event_types" कराए गए कर के भीतर मेरे सभी शब्दों की ड्रॉपडाउन सूची को सही ढंग से प्रदर्शित कर रहा है।
जहाँ मैं किसी समस्या में भाग ले रहा हूँ, ड्रॉपडाउन से एक अलग शब्द चुने जाने पर और पोस्ट अपडेट होने पर पोस्ट से जुड़े शब्द को बचाने / अद्यतन करने में सक्षम हो रहा है।
विभिन्न कोड बिट्स के साथ छेड़छाड़ करने के बाद, मुझे यह पता लगाने में सक्षम था कि MAN_ALLY द्वारा टर्म_ID नंबर (s) [अल्पविराम द्वारा अलग] सरणी क्षेत्र में दर्ज किए जाने के बाद मुझे वे परिणाम मिल रहे हैं जिनकी मुझे तलाश है।
उदाहरण के लिए यदि पोस्ट को सहेजने पर एक फ़ंक्शन को इस कोड को कॉल करना था
wp_set_post_terms( $post_id, array(5,7), 'event_types', FALSE);
तब मेरी पोस्ट अपडेट होगी और शब्द 5_ 7 को उसमें जोड़ दें, जैसा कि आप देख सकते हैं कि मैं सरणी में गुजर रहा हूं। समस्या यह है कि यह मेरे फ़ंक्शंस में मुश्किल है। एफपी फ़ाइल और उपयोगकर्ता द्वारा चयनित ड्रॉपडाउन मान पर आधारित नहीं है (ध्यान दें: मैं वास्तव में केवल एक आईडी पास करने की कोशिश कर रहा हूं लेकिन मैंने नीचे दिए गए अनुसार परीक्षण के लिए दो किए हैं)।
मैं यह भी पता लगाने में सक्षम हूं कि यदि मैं अपनी मेटाबॉक्स फ़ाइल में निम्न कोड जोड़ता हूं तो मैं असाइन की गई आईडी की सूची को गूँजने में सक्षम हूं लेकिन अंतिम आइटम में अल्पविराम है।
<?php $event_types = wp_get_object_terms($post->ID, 'event_types');
foreach ($event_types as $event_type) { echo $event_type->term_id . ','; } ?>
तो ... ऐसा लगता है कि मेरे पास मेरी समस्या का 85% हल है। शेष 15% मेरी समस्या इस प्रकार है:
मुझे अपने फ़ंक्शन.php फ़ाइल कोड (नीचे सूचीबद्ध) में क्या जोड़ने की आवश्यकता है, ताकि जब मैं अपनी टैक्सोनॉमी ड्रॉपडाउन सूची से चुनी गई नई वैल्यू को पोस्ट करूं / अपडेट करूं तो वह ऐरे में पास हो जाए?
हालांकि इस उदाहरण में मैं यह सुनिश्चित करना चाह रहा हूं कि केवल एक एकल वर्गीकरण एक पद के साथ जुड़ा हो सकता है, ऐसी अन्य परिस्थितियां हैं जहां मैं एक चेकबॉक्स सूची बनाना चाहूंगा, जिसके लिए मुझे सरणी में एक से अधिक मान पास करने की आवश्यकता होगी। जैसे, मुझे क्या बदलने की आवश्यकता होगी ताकि शब्द आईडी की अल्पविराम से अलग की गई सूची सरणी में पारित हो जाए? यदि आपके उत्तर में मेरे द्वारा बताए गए उदाहरण कोड के कुछ या कुछ भाग का उपयोग करना शामिल है, जहां मैं आईडी को प्रतिध्वनित करता हूं तो मैं अंतिम आईडी को कैसे सुनिश्चित करता हूं जो मुद्रित है, अंत में अल्पविराम नहीं है? (क्या इसे करने का एक अलग / बेहतर तरीका है? मैंने संकेत देखे जो फ़िल्टर जोड़ने से संबंधित हो सकते हैं लेकिन मुझे यकीन नहीं है कि यह कैसे किया जाता है ...)
आप लोगों का बहुत बहुत धन्यवाद अग्रिम रूप से - नीचे वह कोड है जो मैं वर्तमान में प्रत्येक फ़ाइल में उपयोग कर रहा हूं।
मेरी फंक्शंस में कोड
function save_event_taxonomy_terms($meta, $post_id) {
$event_types = wp_get_object_terms($post->ID, 'event_types');
wp_set_post_terms( $post_id, array($names), 'event_types', FALSE);
}
मेरा मेटबॉक कोड
<select name='post_event_types' id='post_event-types'>
// DISPLAY TERMS AS DROP DOWN OPTIONS
<?php
$names = wp_get_object_terms($post->ID, 'event_types');
$event_types = get_terms('event_types', 'hide_empty=0');
?>
<option class='event_type-option' value='' <?php if (!count($names)) echo "selected";?>>Not Assigned</option>
<?php foreach ($event_types as $event_type) {
if (!is_wp_error($names) && !empty($names) && !strcmp($event_type->slug, $names[0]->slug))
echo "<option class='event_type-option' value='" . $event_type->slug . "' selected>" . $event_type->name . "</option>\n";
else
echo "<option class='event_type-option' value='" . $event_type->slug . "'>" . $event_type->name . "</option>\n";
}
?>
</select>