Может ли пользовательский тип записи иметь родительскую страницу?

16

Я видел много сообщений в Webiverse о назначении страницы в качестве родителя для пользовательского типа сообщения. После четырех часов я не могу найти решение и мне нужна помощь. Я создал страницу «О нас», которая является родителем страницы «Наши люди». Я также создал собственный тип поста под названием «Люди». И я создал собственный шаблон страницы для страницы «Наши люди». Структура Permalink выглядит хорошо, пока вы не попадете на единственную страницу "люди". Например: страница Джона Смита, постоянная ссылка не верна.

Пользовательский тип сообщения:

Желаемая постоянная ссылка Структура: / about-us / our-people / john-smith

Собственно Постоянная ссылка Структура: / our-people / john-smith

Структура страницы "Наши люди": / about-us / our-people

"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 люди-single.php

Ник
источник

Ответы:

19

Это должно работать:

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

в сочетании с:

'has_archive' => false,

Обязательно посетите страницу настроек Постоянных ссылок в вашем администраторе после внесения изменений, чтобы очистить правила перезаписи.

Diggy
источник
2
что это будет делать?
Ник
7
Было бы здорово увидеть некоторые объяснения того, почему это будет работать.
Монреалист
3
Для тех, кто просто пытается дать своему CPT родительскую страницу, а не отключать архивы, стоит отметить, что 'has_archive' также может быть передана строка для архивного слага.
января
3
Также стоит отметить, что это не добавит «о нас» в панировочные сухари от таких плагинов, как Yoast.
Мир
2
@Mir какой-нибудь известный обходной путь для этой проблемы Йоаста?
Арвил