मैं एक बहु-स्तरीय कस्टम पोस्ट प्रकार की संरचना की स्थापना करने की कोशिश कर रहा हूं जो कि पेर्मलिंक की तरह दिखती है authors/books/chapters
, लेखकों, पुस्तकों, और अध्यायों के साथ सभी अपने स्वयं के कस्टम पोस्ट प्रकार के रूप में स्थापित होते हैं। उदाहरण के लिए, इस साइट पर एक विशिष्ट URL जैसा दिखाई दे सकता हैexample.com/authors/stephen-king/the-shining/chapter-3/
प्रत्येक अध्याय केवल एक पुस्तक का हो सकता है, और प्रत्येक पुस्तक केवल एक लेखक की हो सकती है। मैंने लेखकों और पुस्तकों के लिए सीपीटी के बजाय टैक्सोनोमी का उपयोग करने पर विचार किया है, लेकिन मुझे प्रत्येक आइटम के साथ मेटाडेटा को जोड़ने की आवश्यकता है और मैं इसके लिए पोस्ट इंटरफ़ेस पसंद करता हूं।
मैं सीपीटी एक स्तर में एक प्रविष्टि के एक बच्चे के रूप में बस प्रत्येक कस्टम पोस्ट की स्थापना के द्वारा वहाँ सबसे अधिक तरीका है। उदाहरण के लिए, मैं "अध्याय 3" बनाता हूं और एक कस्टम मेटा-बॉक्स का उपयोग करके माता-पिता के रूप में "द शाइनिंग" प्रदान करता हूं। "द शाइनिंग" में माता-पिता के रूप में "स्टीफन किंग" होता है। मुझे इन रिश्तों को बनाने में कोई परेशानी नहीं हुई है।
मैं CPT स्लग में रीमैट टैग का उपयोग कर रहा हूं और पर्मलिंक काम करना चाहता हूं, लेकिन वे काफी सही नहीं हैं। री-राइट एनालाइज़र का उपयोग करते हुए, मैं देख सकता हूं कि पुनर्लेखन नियम वास्तव में उत्पन्न होते हैं, लेकिन वे सही क्रम में नहीं लगते हैं और इसलिए अन्य नियमों को पहले संसाधित किया जाता है।
यहां बताया गया है कि मैंने अपना CPT कैसे पंजीकृत किया है:
function cpt_init() {
$labels = array(
'name' => 'Authors'
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'author',
'with_front' => FALSE,
),
'with_front' => false,
'capability_type' => 'post',
'has_archive' => false,
'hierarchical' => true,
'menu_position' => null,
'supports' => array( 'title', 'editor' )
);
register_post_type('authors',$args);
$labels = array(
'name' => 'Books'
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'author/%authors%',
'with_front' => FALSE,
),
'with_front' => false,
'capability_type' => 'post',
'has_archive' => false,
'hierarchical' => true,
'menu_position' => null,
'supports' => array( 'title', 'editor' )
);
register_post_type('books',$args);
$labels = array(
'name' => 'Chapters'
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'author/%authors%/%books%',
'with_front' => FALSE,
),
'with_front' => FALSE,
'capability_type' => 'post',
'has_archive' => false,
'hierarchical' => true,
'menu_position' => null,
'supports' => array( 'title', 'editor' )
);
register_post_type('chapters',$args);
}
add_action( 'init', 'cpt_init' );
तो क्या मेरे फिर से लिखने के नियमों की प्राथमिकता को बदलने का कोई तरीका है ताकि लेखकों, पुस्तकों और अध्यायों का मिलान पहले किया जा सके?
मुझे यह भी पता है कि मुझे एक post_type_link
फ़िल्टर जोड़ना है , लेकिन यह पहली बार में पर्मलिंक्स प्राप्त करने के लिए द्वितीयक लगता है। अगर किसी को पता है कि मैं एक व्यापक अवलोकन कैसे पा सकता हूं कि फिल्टर कैसे काम करता है, तो इसकी सराहना की जाएगी।