¿Puede un tipo de publicación personalizado tener una página principal?

16

He visto muchas publicaciones en el Webiverse sobre la asignación de una página como padre de un tipo de publicación personalizada. Después de cuatro horas no puedo encontrar una solución y necesito ayuda. He creado una página "Acerca de" que es el padre de una página "Nuestra Gente". También he creado un tipo de publicación personalizado llamado "Personas". Y he creado una plantilla de página personalizada para la página "Nuestra gente". La estructura de enlace permanente se ve bien hasta que llegue a la página individual "personas". Por ejemplo: la página de John Smith, el enlace permanente no es correcto.

Tipo de publicación personalizada:

Estructura de enlace permanente deseada: / about-us / our-people / john-smith

Estructura de enlace permanente: / our-people / john-smith

Estructura de nuestra página de personas: / about-us / our-people

"About-us" es una página, "our-people" es una página y también la reescritura de slug para el tipo de publicación personalizada, "people". He tratado de cambiar la configuración jerárquica y he intentado agregar "acerca de nosotros / nuestra gente" directamente en la reescritura sin éxito.

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

Mis plantillas personalizadas: people.php people-single.php

Mella
fuente

Respuestas:

19

Esto debería funcionar:

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

combinado con:

'has_archive' => false,

Asegúrese de visitar la página de configuración de enlaces permanentes en su administrador después de realizar los cambios para eliminar las reglas de reescritura.

diggy
fuente
2
¿Qué hará eso?
Nick
77
Sería genial ver algunas explicaciones de por qué esto funcionaría.
montrealist el
3
Para cualquiera que esté tratando de dar a su CPT una página principal, y no deshabilitar los archivos, vale la pena señalar que 'has_archive' también puede pasar una cadena para la babosa de archivo.
jwinn
3
También vale la pena señalar que esto no inyectará 'sobre nosotros' en las migas de pan de complementos como Yoast.
Mir
2
@Mir ¿alguna solución conocida para ese problema de Yoast?
Arvil