मुझे हाल ही में वर्डप्रेस में प्रत्येक श्रेणी / कस्टम वर्गीकरण पर कुछ अतिरिक्त मेटा जानकारी स्टोर करने की आवश्यकता थी। असल में, मुझे बस एक अतिरिक्त फ़ील्ड जोड़ने की आवश्यकता है। यह सही हुक ढूंढने और एक साधारण श्रेणी मेटा प्लगइन बनाने का एक साधारण मामला था। हम नई श्रेणियों को जोड़ने में पूरी तरह से काम नहीं करते हैं, हम मुख्य रूप से केवल मौजूदा लोगों पर कुछ अतिरिक्त जानकारी स्टोर करने की आवश्यकता रखते हैं, इसलिए मैंने अभी संपादन फ़ॉर्म में शामिल किया है।
मैं यह भी चाहता था कि यह किसी भी कस्टम टेबल का उपयोग किए बिना काम करे, लेकिन डिफ़ॉल्ट वर्डप्रेस टेबल के भीतर इस तरह की जानकारी स्टोर करने के लिए वास्तव में कोई अच्छी जगह नहीं है। मैंने फैसला किया कि wp_options तालिका सबसे उपयुक्त होगी क्योंकि जब यह नीचे आती है, तो अधिकांश साइटों में कुछ सौ श्रेणियां नहीं होतीं। समस्या बनाने के लिए हमारे अंत में पर्याप्त जानकारी संग्रहीत नहीं की जा रही है।
ADD_ACTION ( 'category_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('edited_category', 'taxonomy_meta_form');
श्रेणी / वर्गीकरण संपादन फॉर्म में पहली क्रिया हुक। यह हमारे द्वारा बनाए गए फॉर्म को प्रदर्शित करता है और taxonomy_meta_form_fields नामक फ़ंक्शन से आउटपुट करता है। जब दूसरी श्रेणी श्रेणी वास्तव में संपादित की जाती है तो दूसरी क्रिया taxonomy_meta_form कहती है।
पूर्ण कोड
ADD_ACTION ( 'category_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('edited_category', 'taxonomy_meta_form'); फ़ंक्शन taxonomy_meta_form () {if (! current_user_can ('manage_options')) // सुनिश्चित करें कि उपयोगकर्ता के पास उचित अनुमतियां हैं; अगर ($ _ POST ['extra_title']) {$ extra_title = sanitize_text_field ($ _ POST ['extra_title']); // सुनिश्चित करें कि कुछ भी दुर्भावनापूर्ण $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ अतिरिक्त_शीर्षक); $ cat_ID = (int) $ _ POST ['tag_ID']; $ अतिरिक्त_शीर्षक [$ cat_ID] = $ अतिरिक्त_ शीर्षक; // इस श्रेणी के आईडी update_option ('extra_taxonomy_titles', $ extra_titles) के मान को अपडेट करें; // सरणी स्टोर करें, WP serialization को संभालता है}} function taxonomy_meta_form_fields ($ टैग) {$ cat_ID = $ टैग-> term_id; $ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_title = $ अतिरिक्त_शीर्षक [$ cat_ID]; ?>
कस्टम टैक्सोनोमीज़ में हुकिंग
ADD_ACTION ( 'TAXONOMYNAME_edit_form_fields', 'taxonomy_meta_form_fields'); add_action ('edited_TAXONOMYNAME', 'taxonomy_meta_form');
यह वही कार्य करने के लिए, लेकिन इसके बजाय कस्टम टैक्सोनोमीज़ के लिए, यह एक्शन हुक बदलने का एक साधारण मामला है। बस अपनी कस्टम वर्गीकरण से जुड़े स्लग के साथ TAXONOMYNAME को प्रतिस्थापित करें।
सूचना प्रदर्शित करना
फ्रंटएंड पर हमारे लिए संग्रहीत जानकारी को पुनर्प्राप्त करने के लिए, मैं आपकी थीम के functions.php फ़ाइल में स्टोर के लिए एक साधारण फ़ंक्शन बनाने की अनुशंसा करता हूं:
फ़ंक्शन tj_extra_title ($ id) {$ extra_titles = get_option ('extra_taxonomy_titles'); $ extra_titles = unserialize ($ अतिरिक्त_शीर्षक); $ extra_title = $ अतिरिक्त_शीर्षक [$ आईडी]; $ अतिरिक्त_शीर्षक वापस करें; }
फिर, इसे टेम्पलेट पेज से निम्नानुसार कहा जा सकता है:
$ extra_title = tj_extra_title ($ category-> term_id); // आईडी को प्रतिस्थापित करें जो भी वैरिएबल आपके संदर्भ के लिए उचित है echo $ extra_title;
जिथूब पर कोड देखें। नीचे प्रश्न पूछें।