ประเภทโพสต์ที่กำหนดเองสามารถมีหน้าหลักได้หรือไม่?


16

ฉันเคยเห็นโพสต์มากมายใน Webiverse เกี่ยวกับการกำหนดเพจเป็นพาเรนต์ของประเภทโพสต์ที่กำหนดเอง หลังจากสี่ชั่วโมงฉันไม่สามารถหาทางออกและต้องการความช่วยเหลือ ฉันสร้างหน้า "เกี่ยวกับ" ที่เป็นหน้าหลักของหน้า "คนของเรา" ฉันยังสร้างประเภทโพสต์ที่กำหนดเองที่เรียกว่า "คน" และฉันได้สร้างเทมเพลตหน้าแบบกำหนดเองสำหรับหน้า "คนของเรา" โครงสร้าง Permalink ดูดีจนกระทั่งคุณไปที่หน้า "คน" เดียว ตัวอย่างเช่น: หน้าของ John Smith, ลิงก์ถาวรไม่ถูกต้อง

ประเภทโพสต์ที่กำหนดเอง:

โครงสร้าง Permalink ที่ต้องการ: / about-us / our-people / john-smith

โครงสร้าง Permalink จริง: / คนของเรา / john-smith

หน้าคนของเราโครงสร้าง: / เกี่ยวกับเรา / คนของเรา

"about-us" เป็นหน้าหนึ่ง "our-people" เป็นหน้าและการเขียนกระสุนสำหรับประเภทโพสต์ที่กำหนดเอง "people" ฉันพยายามเปลี่ยนการตั้งค่าแบบลำดับชั้นและฉันได้ลองเพิ่ม "about-us / our-people" ลงในการเขียนซ้ำโดยไม่ประสบความสำเร็จ

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 people-single.php

คำตอบ:


19

สิ่งนี้น่าจะใช้ได้:

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

รวมกับ:

'has_archive' => false,

อย่าลืมไปที่หน้าการตั้งค่าลิงก์ถาวรในผู้ดูแลระบบของคุณหลังจากที่คุณทำการเปลี่ยนแปลงเพื่อล้างกฎการเขียนซ้ำ


2
มันจะทำอะไร?
Nick

7
คงจะดีถ้าเห็นคำอธิบายว่าทำไมสิ่งนี้ถึงได้ผล
คณิตศาสตร์มอนทาเรีย

3
สำหรับทุกคนที่พยายามจะให้หน้าผู้ปกครองกับ CPT แต่ไม่ได้ปิดการใช้งานจดหมายเหตุเป็นสิ่งที่น่าสังเกตว่า 'has_archive' สามารถส่งผ่านสตริงสำหรับกระสุนที่เก็บถาวรได้
jwinn

3
นอกจากนี้ยังเป็นที่น่าสังเกตว่าสิ่งนี้จะไม่ส่ง 'เกี่ยวกับเรา' ลงใน Breadcrumbs จากปลั๊กอินเช่น Yoast
เมียร์

2
@ มีวิธีแก้ไขปัญหาใด ๆ ที่รู้จักกันดีสำหรับปัญหา Yoast นั้นหรือไม่
arvil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.