कस्टम पोस्ट प्रकार - ऑर्डर फ़ील्ड


14

एक कस्टम पोस्ट प्रकार में, "ऑर्डर" फ़ील्ड को शामिल करने का एक तरीका है जो पृष्ठों के लिए उपलब्ध है?

क्या कोई अंतर्निहित तर्क है जो "ऑर्डर" फ़ील्ड में डुप्लिकेट मानों को रोकता है?

विचार उपयोगकर्ता द्वारा निर्दिष्ट आदेश द्वारा कस्टम पोस्ट प्रकार को सॉर्ट करने में सक्षम होने के लिए है, फिर स्ट्रिंग-आधारित कस्टम फ़ील्ड द्वारा वर्णानुक्रम में।


जवाबों:


25

जब आप अपने कस्टम पोस्ट प्रकार को register_post_type फ़ंक्शन का उपयोग करते हुए घोषित करते हैं, तो आपको निम्न उदाहरण में सहायता फ़ील्ड में 'पृष्ठ-विशेषताएँ' जोड़ना होगा:

register_post_type('myposttype', array(
    'supports' => array('title', 'editor', 'page-attributes'),
    'hierarchical' => false
));

आपको किसी अन्य समर्थित मेटा बॉक्स के साथ-साथ 'support' फ़ील्ड को भी जोड़ने की आवश्यकता होगी, http://codex.wordpress.org/Function_Reference/register_post_type को register_post_type फ़ील्ड के बारे में अधिक जानकारी के लिए देखें ।

जहाँ तक मुझे पता है कि एक ही क्रम के दो को रोकने के लिए कोई तरीका नहीं बनाया गया है, इसका कारण यह है कि आप उत्तराधिकार के आधार पर उप-आदेश बना सकते हैं (इसलिए बच्चों के एक समूह के पेज एक दूसरे से भिन्न आदेश दे सकते हैं)


का उपयोग कर page-attributesप्रस्तुत करता है दोनों orderक्षेत्र और parentक्षेत्र। मैं parentमैदान से कैसे छुटकारा पाऊं?
फोर्स फ्लो

कोई बात नहीं। सेटिंग hierarchicalगलत पर यह से छुटकारा मिलता है।
फोर्स फ्लो

मेरा बुरा, एहसास नहीं था कि आप पृष्ठ माता-पिता भी नहीं चाहते थे। मैं इसे बाहर करने के लिए अपने उत्तर को अपडेट करूंगा।
डेव हंट

नमस्ते। मेरे पास यह कोड है, लेकिन मुझे कुछ भी नहीं दिख रहा है: `` // सेवा कस्टम पोस्ट प्रकार add_action ('init', 'create_post_type'); function create_post_type () {$ support_args = array ('शीर्षक', 'एडिटर', 'पेज-एट्रिब्यूट्स'); register_post_type ('सेवा', सरणी ('लेबल' => सरणी ('नाम' => __ ('सेवाएं'), 'एकवचन_नाम' => __ ('सेवा'), 'समर्थन' => $ __gs, 'श्रेणीबद्ध' => असत्य), 'सार्वजनिक' => सत्य, 'has_archive' => true, // 'menu_position' => 2)); } `` `
सिलार

@Sylar मुझे पता है कि यह बहुत देर हो चुकी है, लेकिन यह मुझे आपके 'सपोर्ट' => $ support_args, 'hierarchical' => एरे के गलत हिस्से में लगता है। आपने इसे अपने उदाहरण में लेबल एरे के तहत नेस्ट किया है, यह बेस एरे में होना चाहिए, 'पब्लिक' के समान स्तर पर => सत्य
डेव हंट

4

@ डेव-हंट की प्रतिक्रिया के अलावा, आप एक फिल्टर भी जोड़ सकते हैं, जैसे कि एक कस्टम ऑर्डर को परिभाषित करने के लिए - इस मामले में, शीर्षक से वर्णानुक्रम। ( मार्क लियोंग के ब्लॉग पोस्ट के लिए कोड धन्यवाद ) is_admin()यदि आप चाहते हैं कि फ्रंट-एंड पर भी आप custom order_by चेक को हटा दें ।

समारोह set_custom_post_types_admin_order ($ wp_query) {
  अगर (is_admin ()) {

    // पोस्ट प्रकार क्वेरी से प्राप्त करें
    $ post_type = $ wp_query-> क्वेरी ['post_type'];

    अगर ($ post_type == 'POST_TYPE') {

      // 'ऑर्डरबी' मान किसी भी स्तंभ का नाम हो सकता है
      $ wp_query-> सेट ('ऑर्डरबी', 'शीर्षक');

      // 'ऑर्डर' मान ASC या DESC हो सकता है
      $ wp_query-> सेट ('ऑर्डर', 'एएससी');
    }
  }
}
add_action ('pre_get_posts', 'set_custom_post_types_admin_order_);

अपडेट करें

प्री-सेव वेलिडेशन के लिए, इस उत्तर को देखें: /wordpress//a/40095/4645 जहां आपके विकल्पों पर चर्चा की गई है। मूल रूप से, यह कस्टम jQuery के लिए नीचे आता है, क्योंकि वर्डप्रेस में कोई पूर्व-बचत हुक नहीं है।

इसके अलावा (भविष्य में संदर्भ के लिए यहां मेरी पिछली टिप्पणी को दोहराते हुए), यहां व्यवस्थापक में 'मेनू ऑर्डर' फ़ील्ड को कैसे उजागर किया जाए, इसलिए यह उपयोगकर्ता-संपादन योग्य है, जैसा कि यह पृष्ठों के लिए है: कस्टम पोस्ट प्रकार व्यवस्थापक स्क्रीन पर 'मेनू ऑर्डर' कॉलम जोड़ना

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