पहले से पंजीकृत कराधान को कैसे संशोधित किया जाए


18

आज मुझे एक कस्टम टैक्सोनॉमी पर तर्कों को बदलने की ज़रूरत थी जो पहले से ही तीसरे पक्ष के प्लगइन द्वारा पंजीकृत थी । विशेष रूप से मैं show_admin_columnतर्क को सेट करना चाहता था trueऔर rewriteस्लग को बदलना चाहता था ताकि यह सिर्फ टैक्सोनॉमी स्लग न हो। इस मामले में, यह "पीपल श्रेणी" कस्टम टैक्सोनॉमी के साथ "पीपल" पोस्ट प्रकार था।

मुझे आश्चर्य हुआ कि यह पहले नहीं पूछा गया था, इसलिए यहां एक सवाल और जवाब है।


किसी को भी अटकाने के लिए बस एक साइड नोट, रिजल्ट चेक करने से पहले पर्मलिंक्स को फ्लश करना याद रखें।
ungrz.vivo

जवाबों:


22

register_taxonomy()नौकरी के लिए उपकरण है। कोडेक्स से:

यह फ़ंक्शन एक वर्गीकरण को जोड़ता या अधिलेखित करता है।

एक विकल्प यह होगा कि उन्हें कॉपी करके register_taxonomy() $argsसंशोधित किया जाए। हालांकि, इसका मतलब यह होगा कि भविष्य में मूल register_taxonomy()कोड में किसी भी तरह का बदलाव किया जाएगा।

इसलिए, कम से कम इस मामले में, मूल तर्क प्राप्त करना बेहतर है, उन लोगों को संशोधित करें जिन्हें मैं बदलना चाहता हूं, और फिर वर्गीकरण को फिर से पंजीकृत करें। इस समाधान के लिए प्रेरणा कस्टम पोस्ट प्रकारों के बारे में इसी तरह के प्रश्न के उत्तर में @Otto पर जाती है ।

उदाहरण से peopleकस्टम पोस्ट प्रकार और people_categoryवर्गीकरण का उपयोग करना , यह यह करेगा:

function wpse_modify_taxonomy() {
    // get the arguments of the already-registered taxonomy
    $people_category_args = get_taxonomy( 'people_category' ); // returns an object

    // make changes to the args
    // in this example there are three changes
    // again, note that it's an object
    $people_category_args->show_admin_column = true;
    $people_category_args->rewrite['slug'] = 'people';
    $people_category_args->rewrite['with_front'] = false;

    // re-register the taxonomy
    register_taxonomy( 'people_category', 'people', (array) $people_category_args );
}
// hook it up to 11 so that it overrides the original register_taxonomy function
add_action( 'init', 'wpse_modify_taxonomy', 11 );

ऊपर ध्यान दें कि मैं तीसरे register_taxonomy()सरणी को अपेक्षित सरणी प्रकार में टाइप करता हूं । यह कड़ाई से आवश्यक नहीं है क्योंकि register_taxonomy()उपयोग करता है wp_parse_args()जो एक objectया संभाल कर सकते हैं array। जिसके अनुसार, register_taxonomy()के $argsएक के रूप में प्रस्तुत किया जाना चाहिए arrayताकि यह मेरे लिए सही लगता है, कोडेक्स के अनुसार।


मैं एक फ्लैट टैक्सोनॉमी को पदानुक्रमित टैक्सोनॉमी में बदलने के लिए ऐसा करने की कोशिश कर रहा हूं। मैं बस पदानुक्रमित संपत्ति को सच में बदल रहा हूं। ऐसा करने से, यह पोस्ट एडिट स्क्रीन के दाईं ओर टैक्सोनॉमी के लिए दो मेटा बॉक्स का कारण बनता है, और मैं वास्तव में टैक्सोनॉमी को जोड़ने में असमर्थ हूं ...
जोएल वोर्शम

सुनिश्चित करें कि आप 'people_category'मूल कर के रूप में उसी स्लग (जैसे ) का उपयोग करते हैं ताकि आप इसे ओवरराइट कर दें।
mrwweb

1
प्रतिभाशाली! प्रतिभाशाली! पूरी तरह से काम किया!
डेवीजेक

1
मुझे इस समाधान के साथ एक समस्या मिली: capabilitiesपैरामीटर को आंतरिक रूप से संग्रहीत किया जाता है, capइसलिए इसे नए पंजीकृत वर्गीकरण में पारित नहीं किया जाएगा। इसी तरह के एक प्रश्न का मेरा उत्तर यहाँ देखें
फाबिएन क्वात्रावाक्स

1
यह अद्भुत है, मैंने इसका इस्तेमाल एक कस्टम टैक्सोनॉमी में पदानुक्रमित यूआरएल जोड़ने के लिए किया।
ब्रायन पीट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.