Может ли у произвольного типа записи быть родительская страница?

15 янв. 2013 г., 23:29:48
Просмотры: 42.1K
Голосов: 19

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

Произвольный тип записи:

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

Фактическая структура постоянных ссылок: /our-people/john-smith

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

"about-us" - это страница, "our-people" - это страница и также slug для перезаписи произвольного типа записи "people". Я пытался изменить иерархические настройки и пробовал добавлять "about-us/our-people" напрямую в перезапись, но безуспешно.

Functions.php:

function codex_custom_init() {
    // Наши люди
    $people_label = array(
        'name' => 'Люди',
        'singular_name' => 'Люди',
        'add_new' => 'Добавить человека',
        'add_new_item' => 'Добавить нового человека',
        'edit_item' => 'Редактировать запись',
        'new_item' => 'Новая запись',
        'all_items' => 'Все записи',
        'view_item' => 'Просмотреть запись',
        'search_items' => 'Поиск записей',
        'not_found' => 'Записи не найдены',
        'not_found_in_trash' => 'В корзине записей не найдено',
        'parent_item_colon' => '',
        'menu_name' => 'Люди',
    );
    $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

0
Все ответы на вопрос 1
6
22

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

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

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

'has_archive' => false,

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

15 янв. 2013 г. 23:52:37
Комментарии

что это сделает?

Nick Nick
16 янв. 2013 г. 00:01:24

Вау, я не понимаю, почему у меня были такие трудности с этим. Спасибо.

Nick Nick
16 янв. 2013 г. 00:03:34

Было бы здорово увидеть объяснения, почему это работает.

montrealist montrealist
22 янв. 2013 г. 20:58:03

Для тех, кто просто пытается назначить родительскую страницу для CPT (пользовательского типа записи), не отключая архивы, стоит отметить, что для параметра 'has_archive' можно также передать строку с slug архива.

jwinn jwinn
9 сент. 2016 г. 06:41:18

Также стоит учитывать, что это не добавит 'about-us' в хлебные крошки (breadcrumbs) плагинов, таких как Yoast.

Mir Mir
9 нояб. 2018 г. 00:23:11

@Mir есть ли известные обходные пути для этой проблемы с Yoast?

arvil arvil
12 дек. 2018 г. 03:00:56
Показать остальные 1 комментариев