WordPress allows you to include the categories within the permalink structure using /%category%/%postname%
. This can be very handy, but if your post is nested within a few categories the URL can start to get too long and messy.
If you want to remove the parent category from the permalink structure in WordPress, simply paste the following code into your functions.php file:
add_filter( 'post_link', 'remove_parent_cats_from_link', 10, 3 ); function remove_parent_cats_from_link( $permalink, $post, $leavename ) { $cats = get_the_category( $post->ID ); if ( $cats ) { // Make sure we use the same start cat as the permalink generator usort( $cats, '_usort_terms_by_ID' ); // order by ID $category = $cats[0]->slug; if ( $parent = $cats[0]->parent ) { // If there are parent categories, collect them and replace them in the link $parentcats = get_category_parents( $parent, false, '/', true ); // str_replace() is not the best solution if you can have duplicates: // myexamplesite.com/luxemburg/luxemburg/ will be stripped down to myexamplesite.com/ // But if you don't expect that, it should work $permalink = str_replace( $parentcats, '', $permalink ); } } return $permalink; }