Un type de publication personnalisé peut-il avoir une page parent?

16

J'ai vu beaucoup de publications dans Webiverse sur l'attribution d'une page en tant que parent d'un type de publication personnalisé. Après quatre heures, je ne trouve pas de solution et j'ai besoin d'aide. J'ai créé une page "À propos" qui est le parent d'une page "Nos collaborateurs". J'ai également créé un type de publication personnalisé appelé "People". Et j'ai créé un modèle de page personnalisé pour la page "Nos collaborateurs". La structure de Permalink semble bien jusqu'à ce que vous arriviez à la page unique "personnes". Par exemple: la page de John Smith, le permalien n'est pas correct.

Type de publication personnalisé:

Structure de permalien souhaitée: / about-us / our-people / john-smith

En fait, la structure de permalien: / our-people / john-smith

Our People Page Strucure: / qui sommes-nous / nos-gens

"About-us" est une page, "our-people" est une page et aussi la réécriture de slug pour le type de message personnalisé, "people". J'ai essayé de changer les paramètres hiérarchiques et j'ai essayé d'ajouter "about-us / our-people" directement dans la réécriture sans succès.

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

Mes modèles personnalisés: people.php people-single.php

pseudo
la source

Réponses:

19

Cela devrait fonctionner:

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

combiné avec:

'has_archive' => false,

Assurez-vous de visiter la page des paramètres Permaliens dans votre administrateur après avoir effectué les modifications pour vider les règles de réécriture.

diggy
la source
2
qu'est-ce que ça va faire?
Nick
7
Ce serait formidable de voir quelques explications sur les raisons pour lesquelles cela fonctionnerait.
montréaliste le
3
Pour tous ceux qui essaient simplement de donner à leur CPT une page parent et de ne pas désactiver les archives, il convient de noter que 'has_archive' peut également recevoir une chaîne pour le fichier d'archive.
jwinn
3
Il convient également de noter que cela n'injectera pas «à propos de nous» dans le fil d'Ariane à partir de plugins tels que Yoast.
Mir
2
@Mir une solution de contournement connue pour ce problème Yoast?
arvil