क्या कोई कस्टम पोस्ट प्रकार का कोई पेरेंट पेज हो सकता है?


16

मैंने वेब पोस्ट में कस्टम पोस्ट प्रकार के माता-पिता के रूप में एक पृष्ठ असाइन करने के बारे में बहुत सारी पोस्ट देखी हैं। चार घंटे के बाद मुझे कोई हल नहीं मिल रहा है और कुछ मदद की ज़रूरत है। मैंने एक "अबाउट" पेज बनाया है जो एक "हमारे लोग" पेज का जनक है। मैंने एक कस्टम पोस्ट टाइप भी बनाया है जिसे "पीपल" कहा जाता है। और मैंने "हमारे लोग" पृष्ठ के लिए एक कस्टम पृष्ठ टेम्पलेट बनाया है। पर्मलिंक संरचना तब तक ठीक दिखती है जब तक आप एकल "लोगों" पृष्ठ पर नहीं आते। उदाहरण के लिए: जॉन स्मिथ पेज, पर्मलिंक सही नहीं है।

कस्टम पोस्ट प्रकार:

वांछित पर्मलिंक संरचना: / हमारे बारे में / हमारे लोग / जॉन-स्मिथ

वास्तव में पर्मलिंक संरचना: / हमारे लोग / जॉन-स्मिथ

हमारे लोग पृष्ठ की स्थिति: / हमारे बारे में / हमारे लोग

"About-us" एक पृष्ठ है, "हमारे-लोग" एक पृष्ठ है और कस्टम पोस्ट प्रकार, "लोग" के लिए स्लग रीराइट भी है। मैंने पदानुक्रमित सेटिंग्स को बदलने की कोशिश की है और मैंने बिना किसी सफलता के सीधे "पुनः-हमारे / हमारे लोगों" को जोड़ने की कोशिश की है।

functions.php:

function codex_custom_init() {
    // Our People
    $people_label = array(
        'name' => 'People',
        'singular_name' => 'People',
        'add_new' => 'Add People',
        'add_new_item' => 'Add New People',
        'edit_item' => 'Edit People',
        'new_item' => 'New People',
        'all_items' => 'All People',
        'view_item' => 'View People',
        'search_items' => 'Search People',
        'not_found' => 'No People found',
        'not_found_in_trash' => 'No People found in Trash',
        'parent_item_colon' => '',
        'menu_name' => 'People',
    );
    $people_args = array (
        'labels' => $people_label,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'query_var' => true,
        'rewrite' => array( 'slug' => 'our-people'),
        'capability_type' => 'page',
        'has_archive' => true,
        'hierarchical' => true,
        'menu_position' => null,
        'menu_icon' => get_template_directory_uri() . '/images/icons/people.png',
        'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt','page-attributes'),
    );

    register_post_type('people', $people_args);
}

मेरे कस्टम टेम्पलेट: People.php लोग- single.php

जवाबों:


19

यह काम करना चाहिए:

'rewrite' => array( 'slug' => 'about-us/our-people'),

के साथ संयुक्त:

'has_archive' => false,

अपने नियमों को फिर से लिखने के लिए परिवर्तन करने के बाद अपने व्यवस्थापक की Permalinks सेटिंग्स पृष्ठ पर जाना सुनिश्चित करें।


2
वह क्या करेगा?
निक

7
यह क्यों काम करेगा के कुछ स्पष्टीकरण देखने के लिए बहुत अच्छा होगा।
montrealist

3
किसी के लिए भी बस अपने CPT को एक मूल पृष्ठ देने की कोशिश करना, और अभिलेखागार को अक्षम नहीं करना है, यह ध्यान देने योग्य है कि 'has_archive' को संग्रह स्लग के लिए एक स्ट्रिंग भी पारित किया जा सकता है।
jwinn

3
यह भी ध्यान देने योग्य है कि यह Yoast जैसे प्लगइन्स से ब्रेडक्रंब में 'about-us' को इंजेक्ट नहीं करेगा।
मीर

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