I have 4 Custom Post Types:
Services FAQs Prices Before and After
I want to be able to have the same post names within each of these post types, example:
Services
Skin (example.com/Services/skin)
Cream (example.com/Services/cream)
Body (example.com/Services/body)FAQs
Skin (example.com/FAQs/skin)
Cream (example.com/FAQs/cream)
Body (example.com/FAQs/body)Prices
Skin (example.com/Prices/skin)
Cream (example.com/Prices/cream)
Body (example.com/Prices/body)Before and After
Skin (example.com/before-and-after/skin)
Cream (example.com/before-and-after/cream)
Body (example.com/before-and-after/body)
How can I do this? Right now if I make a new post with the same name as a current one, it adds a "-2" or "-3" to the end of the posts slug:
BAD:
example.com/services/body
example.com/faqs/body-2
example.com/prices/body-3
example.com/before-and-after/body-4
SOMEONE PLEASE HELP!!!!!
add_action('init', 'create_post_type_html5'); // Add our HTML5 Blank Custom Post Type
function create_post_type_html5()
{
register_taxonomy_for_object_type('category', 'html5-blank'); // Register Taxonomies for Category
register_taxonomy_for_object_type('post_tag', 'html5-blank');
register_post_type('html5-blank', // Register Custom Post Type
array(
'labels' => array(
'name' => __('Services', 'html5blank'), // Rename these to suit
'singular_name' => __('Services', 'html5blank'),
'add_new' => __('Add New', 'html5blank'),
'add_new_item' => __('Add New Services', 'html5blank'),
'edit' => __('Edit', 'html5blank'),
'edit_item' => __('Edit Services', 'html5blank'),
'new_item' => __('New Services', 'html5blank'),
'view' => __('View Services', 'html5blank'),
'view_item' => __('View Services', 'html5blank'),
'search_items' => __('Search Services', 'html5blank'),
'not_found' => __('No Servicess found', 'html5blank'),
'not_found_in_trash' => __('No Service\'s found in Trash', 'html5blank')
),
'rewrite' => array('slug' => 'service','with_front' => true),
'public' => true,
'hierarchical' => true, // Allows your posts to behave like Hierarchy Pages
'has_archive' => true,
'supports' => array(
'title',
'editor',
'excerpt',
'thumbnail'
), // Go to Dashboard Custom HTML5 Blank post for supports
'can_export' => true, // Allows export in Tools > Export
'taxonomies' => array(
'post_tag',
'category'
) // Add Category and Post Tags support
));
}
There is only one solution. Your posts need a unique identifier (slug) and cannot be named the same in the url. Except if they are hierarchical. And you can do that with custom post types. Use :
Then you will be able to have identical names with different custom post types
One solution may be to change your
rewrite
rules forwith_front
to false. For example, if you setyou should be able to use the same categories/taxonomies in each one without conflicts.
Depending on what you're doing, you may have to define a unique taxonomy for each custom post type as well.
Mind not to post different codes on the two questions you have sent.
I think that this is a bug not yet solved by wordpress programmer team. Here are some other explanation about it : Allow duplicate slugs for different content
I found an uncorrect written code in this function: wp_unique_post_slug located in the core file (wp_includes/post.php) checking wether the permalink inserted is unique or not.
Unfortunately, I was forced to hack core code to fix the bug. I've replaced this code portion started from line 2859:
with this code written by me:
Please... Should anyone know any other solution to the case, or even more important should anyone know of any unpredictable consequence that would affect the solution I have found,please let me know, I would be really grateful!
I have searched for other references to this problem (it occurs too with subcategories for different parent categories) and its even marked as enhancement for future release, in that ticket, I've found a reference to function wp_unique_post_slug in wp-includes/post.php. Maybe you should take a look at it and spot a way to fix the current WP misbehavior.
A dirty solution could be re-checking the full slug output and if there is no duplicates, trim the numeric suffix added, but I'm pretty newbie reading WP source code to offer more advice into this.
I wrote a function that can be added to your theme's functions.php file that includes the patch written by mboynes in this ticket: http://core.trac.wordpress.org/ticket/18962#comment:14