Kann ein benutzerdefinierter Beitragstyp eine übergeordnete Seite haben?

16

Ich habe viele Posts im Webiverse gesehen, in denen es darum ging, eine Seite als übergeordnetes Element eines benutzerdefinierten Post-Typs zuzuweisen. Nach vier Stunden kann ich keine Lösung finden und brauche Hilfe. Ich habe eine "Über" -Seite erstellt, die die übergeordnete Seite einer "Unsere Mitarbeiter" -Seite ist. Ich habe auch einen benutzerdefinierten Beitragstyp mit dem Namen "People" erstellt. Und ich habe eine benutzerdefinierte Seitenvorlage für die Seite "Unsere Mitarbeiter" erstellt. Die Permalink-Struktur sieht gut aus, bis Sie zur einzelnen "Personen" -Seite gelangen. Zum Beispiel: John Smiths Seite, der Permalink ist nicht korrekt.

Benutzerdefinierter Beitragstyp:

Gewünschte Permalink-Struktur: / über-uns / unser-Volk / John-Smith

Tatsächlich Permalink Structure: / our-people / john-smith

Unsere Personenseite Struktur: / über-uns / unsere-Leute

"About-us" ist eine Seite, "our-people" ist eine Seite und auch der Slug-Rewrite für den benutzerdefinierten Post-Typ "people". Ich habe versucht, die hierarchischen Einstellungen zu ändern, und ich habe versucht, "Über uns / unsere Leute" direkt in das Neuschreiben einzufügen, ohne Erfolg.

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

Meine benutzerdefinierten Vorlagen: people.php people-single.php

Nick
quelle

Antworten:

19

Das sollte funktionieren:

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

kombiniert mit:

'has_archive' => false,

Stellen Sie sicher, dass Sie die Seite mit den Permalinks-Einstellungen in Ihrem Administrator aufrufen, nachdem Sie die Änderungen vorgenommen haben, um die Umschreiberegeln zu löschen.

diggy
quelle
2
was macht das
Nick
7
Es wäre toll, einige Erklärungen zu sehen, warum dies funktionieren würde.
Montrealist
3
Wenn Sie nur versuchen, dem CPT eine übergeordnete Seite zuzuweisen und die Archive nicht zu deaktivieren, sollten Sie beachten, dass "has_archive" auch eine Zeichenfolge für den Archiv-Slug übergeben werden kann.
Donnerstag,
3
Es ist auch erwähnenswert, dass dies nicht "über uns" in die Brotkrumen von Plugins wie Yoast injiziert.
Mir
2
@Mir gibt es eine bekannte Problemumgehung für dieses Yoast-Problem?
12.