I understand there are 2 different types when it comes to a custom post type:
-page
-post.
Where page supports child pages, and post does not.
However, when i try to make a child page with only numbers in it’s slug, wordpress puts -2 behind it. Example:
/posttype/parent/10-2/
instead of what i would have wanted:
/posttype/parent/10/
Why is this, and how can i solve it? I have searched for hours, but i can’t seem to find a solution, other than it’s perhaps a limitation in WordPress, do to a conflict with it’s date permalink system. I’m not using this system, but could this be true?
EDIT, some more information:
There are no posts whatsoever which can conflict with my permalink. The permalink is definitely not taken.
I get this behaviour with a completely new install of wordpress, and only 1 custom post type. The only posts in the wordpress database are ‘parent’ and ’02’. Where ’02’ turns into ’02-2′.
I was wondering if maybe pagination /slug/page/02 was maybe the reason numeric slugs were not accepted?
It is important to note, I only get this with numeric slugs, /parent/child/ is not a problem.
I’ve seen something about overriding the filters, but won’t that simply hide the problem? I prefer to solve it.
The code I use to register my custom post type:
$labels = array(
'name' => _x( $options['euthus_posttype_meervoud'], 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( $options['euthus_posttype'], 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( $options['euthus_posttype_meervoud'], 'text_domain' ),
'name_admin_bar' => __( $options['euthus_posttype_meervoud'], 'text_domain' ),
'parent_item_colon' => __( 'Parent Item:', 'text_domain' ),
'all_items' => __( 'All Items', 'text_domain' ),
'add_new_item' => __( 'Add New Item', 'text_domain' ),
'add_new' => __( 'Add New', 'text_domain' ),
'new_item' => __( 'New Item', 'text_domain' ),
'edit_item' => __( 'Edit Item', 'text_domain' ),
'update_item' => __( 'Update Item', 'text_domain' ),
'view_item' => __( 'View Item', 'text_domain' ),
'search_items' => __( 'Search Item', 'text_domain' ),
'not_found' => __( 'Not found', 'text_domain' ),
'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ),
);
$rewrite = array(
'slug' => $options['euthus_posttype_baseurl'],
'with_front' => true,
'pages' => false,
'feeds' => true,
);
$args = array(
'label' => __( 'euthus_childs', 'text_domain' ),
'description' => __( $options['euthus_posttype_meervoud'], 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'thumbnail', 'page-attributes',),
'hierarchical' => true,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 20,
'menu_icon' => 'dashicons-networking',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'rewrite' => $rewrite,
'capability_type' => 'page',
);
register_post_type( 'euthus_childs', $args );
As I understand, the ‘capability_type’ must be set to page and not post to allow for hierarchical, where setting it to ‘post’ does not allow this.