कस्टम टैक्सोनॉमी इनपुट्स की उपस्थिति को बदलना


14

मैं एक ऐसी साइट पर काम कर रहा हूं जो कुछ कस्टम टैक्सोनॉमीज़ (कस्टम पोस्ट प्रकारों के लिए) का उपयोग करेगी। मैंने कुछ वर्गीकरणों को श्रेणीबद्ध बनाने के लिए चुना है, क्योंकि गैर-श्रेणीबद्ध टैक्सोनोमीज़ के फ़्री-फॉर्म इनपुट की तुलना में इस साइट के लिए इनपुट वैल्यूज़ (चेक बॉक्स) की विधि अधिक वांछनीय है। हालाँकि, मैं वास्तव में क्या चाहूंगा कि चेक बॉक्स के बजाय रेडियो बटन इनपुट का उपयोग करने में सक्षम हो। इसके अतिरिक्त, मैं उस ड्रॉपडाउन को दूर करना चाहूंगा जिसका उपयोग वर्गीकरण में मूल वस्तु को चुनने के लिए किया जाता है। स्क्रीनशॉट

क्या मैं इसके बारे में गलत तरीके से जा रहा हूं? क्या मुझे गैर-पदानुक्रमित टैक्सोनॉमीज़ से शुरू करना चाहिए और इसके बजाय उन पर इनपुट विधियों को संशोधित करना चाहिए? मैं पूरी तरह से इनपुट के लिए खुला हूं और यदि कोई हो तो मैं किसी भी प्रश्न का उत्तर दूंगा या अधिक जानकारी दूंगा।


+1 अच्छा प्रश्न। यह एक परियोजना के लिए भी अच्छा होगा जो मैं भी काम कर रहा हूं। इसके अलावा, कस्टम वर्गीकरण को "श्रेणियों" की सूची के बजाय ड्रॉपडाउन मेनू होना चाहिए।
ज़ैक

हाँ, एक लटकती भी महान होगा।
ट्रैविस नॉर्थकटt


मौजूदा मेटाबॉक्स को संशोधित करने की कोशिश करने के बजाय, आप जो कर सकते हैं, वह दिए गए टैक्सोनॉमी के लिए डिफ़ॉल्ट मेटाबॉक्स को हटा रहा है, फिर एक कस्टम फ़ंक्शन को कॉल करने के लिए अपना पंजीकरण करना जो एक रेडियो समूह में शर्तों को प्रदर्शित करता है, और इसके साथ टाई होगा। Maugly द्वारा ऊपर दिए गए दो लिंक।
t31os

जवाबों:


13

निश्चित बात, बस 'admin_head'इसे गायब करने के लिए सीएसएस और हुक का उपयोग करें । मेरा मानना ​​है कि यह वही है जो आप ढूंढ रहे हैं?

माता-पिता के बिना वर्डप्रेस पोस्ट पेज पर पदानुक्रमित टैक्सोनॉमी प्रविष्टि
(स्रोत: mikeschinkel.com )

बस अपनी थीम की functions.phpफ़ाइल में या .phpप्लगइन की एक फ़ाइल में जोड़ें जिसे आप लिख रहे होंगे। ध्यान दें कि मैंने "होम" पोस्ट प्रकार और "बाथ" टैक्सोनॉमी 'init'को परिभाषित करने के लिए एक हुक शामिल किया है ताकि अन्य लोग आसानी से उदाहरण का पालन कर सकें। यह भी ध्यान रखें कि यदि आपके वर्गीकरण का नाम है स्नान " आप होने के लिए CSS चयनकर्ता को बदलना होगा के बजाय :#newbaths_parent#newbath_parent

add_action('admin_head','remove_bath_parents');
function remove_bath_parents() {
  global $pagenow;
  if (in_array($pagenow,array('post-new.php','post.php'))) { // Only for the post add & edit pages
    $css=<<<STYLE
<style>
<!--
#newbath_parent {
  display:none;
}
-->
</style>
STYLE;
    echo $css;
  }
}
add_action('init','add_homes_and_baths');
function add_homes_and_baths() {
  register_post_type('home',
    array(
      'label'           => 'Homes',
      'public'          => true,
      'rewrite'         => array('slug' => 'homes'),
      'hierarchical'    => false,
    )
  );
  register_taxonomy('bath', 'home', array(
    'hierarchical'    => true,
    'label'           => 'Baths',
    'rewrite'         => array('slug' => 'baths' ),
    )
  );
}

अपडेट करें

तो ऐसा लगता है कि मैं प्रश्न के रेडियो बटन को याद कर रहा हूं । दुर्भाग्य से वर्डप्रेस यह आसान नहीं बनाता है, लेकिन आप इसे PHP आउटपुट बफरिंग ( ob_start()और ob_get_clean()फ़ंक्शंस के माध्यम से ) का उपयोग करके बना सकते हैं बस मेटाबॉक्स के आउटपुट से पहले एक हुक ढूंढें ( 'add_meta_boxes') और आउटपुट के बाद एक हुक है ( 'dbx_post_sidebar') और फिर कैप्चर किया गया खोज करें। HTML के लिए 'checkbox'और से बदलने के लिए 'radio', यह स्क्रीन के लिए प्रतिध्वनि और येर किया! कोड इस प्रकार है:

add_action('add_meta_boxes','mysite_add_meta_boxes',10,2);
function mysite_add_meta_boxes($post_type, $post) {
  ob_start();
}
add_action('dbx_post_sidebar','mysite_dbx_post_sidebar');
function mysite_dbx_post_sidebar() {
  $html = ob_get_clean();
  $html = str_replace('"checkbox"','"radio"',$html);
  echo $html;
}

और सबूत:

रेडियो बटन का उपयोग कर वर्गीकरण दिखाते हुए स्क्रीनशॉट
(स्रोत: mikeschinkel.com )


1
"देखो मा, कोई पेरेंट फील्ड नहीं!" माइक, आपने मुझे हंसाया! : डी
मिशाल मऊ

@maugly - यह मेरी डिफ़ॉल्ट है। : डी
माइकस्किंकेल

@ हाहा - खुशी है कि आप इसे पसंद करते हैं। :)
माइकस्किंकेल

शानदार, हमेशा की तरह।
ट्रैविस नॉर्थकट

1
@tnorthcutt - सच कहूँ तो, मैं अपनी खुद की मेटाबॉक्स कोडिंग की सलाह दूंगा। मैंने यही किया है और यह वास्तव में इसके लिए कठिन नहीं है। बस एक दृश्य स्रोत और मैच <input>और <select>नाम करते हैं और आपको टैक्सोनॉमी पर कब्जा करने के लिए कुछ भी करने की ज़रूरत नहीं होगी; वर्डप्रेस इसे आपके लिए करेगा। या, एक कस्टम फ़ील्ड का उपयोग करें और टैक्सोनॉमी को बायपास करें जो इसके लिए ओवरकिल हो सकता है।
२२:२el बजे माइकस्चिन्कल

2

या, यदि आप आलसी हैं तो इस प्लगइन का उपयोग कर सकते हैं: सिंगल वैल्यू टैक्सोनॉमी यूआई

(मैंने इसे माइक के जवाब के लिए एक टिप्पणी के रूप में जोड़ा होगा क्योंकि यह ज्यादातर यही काम करता है - लेकिन मैं अभी तक टिप्पणी नहीं जोड़ सकता)


दुर्भाग्यवश 2 साल में कोई अपडेट नहीं :( यह वास्तव में ऐसा कुछ है जिसमें WP को मूल समर्थन जोड़ना चाहिए क्योंकि कई लोग एक-टर्म-प्रति-वस्तु टैक्सोनॉमी का उपयोग करेंगे यदि यह एक विकल्प था (यानी क्वेरी प्रदर्शन महत्वपूर्ण होने पर मेटा के बजाय टैक्सोनोमी का उपयोग करें)।
jerclarke
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.