I’ve seen a lot of posts out there in the Webiverse about assigning a page as a parent of a custom post type. After four hours I can’t find a solution and need some help. I’ve create an “About” page that is the parent of an “Our People” page. I’ve also create a custom post type called “People”. And I’ve created a custom page template for the “Our People” page. The Permalink structure looks fine until you get to the single “people” page. For Example: John Smith’s Page, the permalink isn’t correct.
Custom post type:
Desired Permalink Structure:
/about-us/our-people/john-smith
Actually Permalink Structure:
/our-people/john-smith
Our People Page Strucure:
/about-us/our-people
The “about-us” is a page, “our-people” is a page and also the slug rewrite for the custom post type, “people”. I’ve tried to change the hierarchical settings and I’ve tried adding “about-us/our-people” directly into the rewrite with no success.
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);
}
My Custom Templates:
people.php
people-single.php
This should work:
'rewrite' => array( 'slug' => 'about-us/our-people'),
combined with:
'has_archive' => false,
Make sure to visit the Permalinks settings page in your admin after you made the changes to flush the rewrite rules.