This issue seems to be quite common, but the solutions that worked for others haven't worked for me.
I'm using the CPT UI plugin and have created a CPT called 'courses' with the following settings:
register_post_type('courses', array( 'label' => 'Courses', 'description' => '', 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'capability_type' => 'post', 'map_meta_cap' => true, 'hierarchical' => true, 'rewrite' => array('slug' => 'courses', 'with_front' => true), 'query_var' => true, 'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes','post-formats'), 'labels' => array ( 'name' => 'Courses', 'singular_name' => 'Course', 'menu_name' => 'Courses', 'add_new' => 'Add Course', 'add_new_item' => 'Add New Course', 'edit' => 'Edit', 'edit_item' => 'Edit Course', 'new_item' => 'New Course', 'view' => 'View Course', 'view_item' => 'View Course', 'search_items' => 'Search Courses', 'not_found' => 'No Courses Found', 'not_found_in_trash' => 'No Courses Found in Trash', 'parent' => 'Parent Course', )
I then created a page called 'courses' and a specialized page template called 'page-courses.php' and a template called 'single-courses.php' for any posts within the courses custom post type. Up to now everything worked correctly.
Next, I created a new page with the slug of 'questions-checkout' and 'courses' as it's parent. It is this page that gives a 404.
I've tried the following to get it working:
- In admin: settings > permalinks and resaved added
flush_rewrite_rules();to functions.php and refreshed the 'questions-checkout' page
- Installed 'rewrite rules' plugin and flushed the rewrite rules
- Created a new custom post type using CPT UI.
Using one or more of the above 3 fixes does indeed fix the 404 on 'questions-checkout'. However, I then get a 404 on posts within the courses page e.g. /courses/post-title.
No matter how hard I try, it's one or the other that works - I can't get both courses posts and child pages to be 404-free.
Strictly speaking, I know that pages should not have the same name as a custom post type, so I suspect this is the cause of the 404. My next approach was to delete the 'courses' page, and its child 'questions-checkout'. Then I changed 'page-courses.php' to 'archive-courses.php' and set 'has_archive' to 'true'.
So as it stands, I have a working archive pages and singular pages for my 'courses' custom post type. But how can I now add a page called 'questions-checkout' with the URL /courses/questions-checkout ?
I'm using WordPress 3.9.1 multisite.