Czy niestandardowy typ postu może mieć stronę nadrzędną?

16

W Webiverse widziałem wiele postów na temat przypisywania strony jako elementu nadrzędnego niestandardowego typu postów. Po czterech godzinach nie mogę znaleźć rozwiązania i potrzebuję pomocy. Utworzyłem stronę „Informacje”, która jest rodzicem strony „Nasi ludzie”. Stworzyłem również niestandardowy typ posta o nazwie „Ludzie”. I utworzyłem niestandardowy szablon strony dla strony „Nasi ludzie”. Struktura Permalink wygląda dobrze, dopóki nie przejdziesz do pojedynczej strony „people”. Na przykład: Strona Johna Smitha, bezpośredni link jest nieprawidłowy.

Niestandardowy typ postu:

Pożądana struktura bezpośredniego łącza: / about-us / our-people / John-Smith

Właściwie Permalink Structure: / our-people / John-Smith

Struktura strony naszych ludzi: / about-us / our-people

„O nas” to strona, „nasi ludzie” to strona, a także przepisywanie informacji o niestandardowym typie postów „ludzie”. Próbowałem zmienić ustawienia hierarchiczne i bezskutecznie próbowałem dodać słowo „o nas / nasi ludzie” bezpośrednio do przepisywania.

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

Moje niestandardowe szablony: people.php people-single.php

Nacięcie
źródło

Odpowiedzi:

19

To powinno działać:

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

w połączeniu z:

'has_archive' => false,

Pamiętaj, aby po wprowadzeniu zmian odwiedzić stronę ustawień Permalinks u administratora.

kopać
źródło
2
co to zrobi
Nick
7
Byłoby wspaniale zobaczyć wyjaśnienia, dlaczego to zadziała.
montrealista
3
Dla każdego, kto próbuje nadać CPT stronie nadrzędnej i nie wyłączać archiwów, warto zauważyć, że „has_archive” można również przekazać ciąg archiwum.
jwinn
3
Warto również zauważyć, że nie spowoduje to wstrzyknięcia „około nas” do bułki tartej z wtyczek takich jak Yoast.
Mir
2
@ Czy jest jakieś znane obejście tego problemu Yoast?
arvil,