Um tipo de postagem personalizado pode ter uma página pai?

16

Eu já vi muitas postagens no Webiverse sobre a atribuição de uma página como pai de um tipo de postagem personalizada. Depois de quatro horas, não consigo encontrar uma solução e preciso de ajuda. Eu criei uma página "Sobre" que é o pai de uma página "Nosso pessoal". Também criei um tipo de postagem personalizado chamado "Pessoas". E eu criei um modelo de página personalizado para a página "Nosso pessoal". A estrutura do Permalink fica bem até você chegar à página "pessoas". Por exemplo: Página de John Smith, o link permanente não está correto.

Tipo de postagem personalizada:

Estrutura Desejada Permalink: / sobre-nós / nosso-pessoal / john-smith

Na verdade, estrutura permanente: / our-people / john-smith

Estrutura da nossa página de pessoas: / about-us / our-people

O "sobre nós" é uma página, "nosso povo" é uma página e também a reescrita de lesmas para o tipo de postagem personalizada, "pessoas". Tentei alterar as configurações hierárquicas e tentei adicionar "sobre nós / nosso pessoal" diretamente na reescrita, sem sucesso.

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);
}

Meus modelos personalizados: people.php people-single.php

usuario
fonte

Respostas:

19

Isso deve funcionar:

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

combinado com:

'has_archive' => false,

Certifique-se de visitar a página de configurações Permalinks em seu administrador depois de fazer as alterações para liberar as regras de reescrita.

indecente
fonte
2
o que isso vai fazer?
Nick
7
Seria ótimo ver algumas explicações sobre por que isso funcionaria.
montrealist
3
Para quem está apenas tentando fornecer à CPT uma página pai e não desativar os arquivos, é importante notar que 'has_archive' também pode receber uma string para a lesma do arquivo.
jwinn
3
Também é importante notar que isso não injeta 'sobre nós' no Breadcrumbs a partir de plugins como o Yoast.
Mir
2
@Mir alguma solução conhecida para esse problema do Yoast?
Arvil