{"id":4183,"date":"2022-08-21T21:54:55","date_gmt":"2022-08-21T16:24:55","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/"},"modified":"2022-08-21T21:54:55","modified_gmt":"2022-08-21T16:24:55","slug":"solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/","title":{"rendered":"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-39862\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"39862\" data-parentid=\"39500\" data-score=\"78\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>After combining a bunch of pieces of other answers I got it working!  So here&#8217;s the solution for those of you who are struggling with this too:<\/p>\n<p>This post and this one helped me out some, so thanks to those guys.  <\/p>\n<p>Note, all this code, plus your initial custom post type and taxonomy registration code goes in your <code>functions.php<\/code> file.<\/p>\n<p>First get your slugs right when defining your custom post types and taxonomies: for the custom post type it should be <code>basename\/%taxonomy_name%<\/code> and the slug for your taxonomy should be just <code>basename<\/code>.  Don&#8217;t forget to also add <code>'hierarchical' =&gt; true<\/code> to the taxonomy rewrite array to get nested terms in your url.  Also make sure <code>query_var<\/code> is set to <code>true<\/code> in both cases.<\/p>\n<p>You need to add a new rewrite rule so WordPress knows how to interpret your url structure.  In my case the custom post type part of the uri will always be the 5th uri segment, so I defined my match rule accordingly.  Note that you may have to change this if you use more or less uri segments.  If you&#8217;ll have varying levels of nested terms then you&#8217;ll need to write a function to check whether the the last uri segment is a custom post type or a taxonomy term to know which rule to add (ask me if you need help on that).<\/p>\n<pre><code>add_filter('rewrite_rules_array', 'mmp_rewrite_rules');\nfunction mmp_rewrite_rules($rules) {\n    $newRules  = array();\n    $newRules['basename\/(.+)\/(.+)\/(.+)\/(.+)\/?$'] = 'index.php?custom_post_type_name=$matches[4]'; \/\/ my custom structure will always have the post name as the 5th uri segment\n    $newRules['basename\/(.+)\/?$']                = 'index.php?taxonomy_name=$matches[1]'; \n\n    return array_merge($newRules, $rules);\n}\n<\/code><\/pre>\n<p>Then you need to add this code to let workpress how to handle <code>%taxonomy_name%<\/code> in your custom post type rewrite slug structure:<\/p>\n<pre><code>function filter_post_type_link($link, $post)\n{\n    if ($post-&gt;post_type != 'custom_post_type_name')\n        return $link;\n\n    if ($cats = get_the_terms($post-&gt;ID, 'taxonomy_name'))\n    {\n        $link = str_replace('%taxonomy_name%', get_taxonomy_parents(array_pop($cats)-&gt;term_id, 'taxonomy_name', false, \"https:\/\/wordpress.stackexchange.com\/\", true), $link); \/\/ see custom function defined below\n    }\n    return $link;\n}\nadd_filter('post_type_link', 'filter_post_type_link', 10, 2);\n<\/code><\/pre>\n<p>I created a custom function based on WordPress&#8217;s own <code>get_category_parents<\/code>:<\/p>\n<pre><code>\/\/ my own function to do what get_category_parents does for other taxonomies\nfunction get_taxonomy_parents($id, $taxonomy, $link = false, $separator=\"https:\/\/wordpress.stackexchange.com\/\", $nicename = false, $visited = array()) {    \n    $chain = '';   \n    $parent = &amp;get_term($id, $taxonomy);\n\n    if (is_wp_error($parent)) {\n        return $parent;\n    }\n\n    if ($nicename)    \n        $name = $parent -&gt; slug;        \nelse    \n        $name = $parent -&gt; name;\n\n    if ($parent -&gt; parent &amp;&amp; ($parent -&gt; parent != $parent -&gt; term_id) &amp;&amp; !in_array($parent -&gt; parent, $visited)) {    \n        $visited[] = $parent -&gt; parent;    \n        $chain .= get_taxonomy_parents($parent -&gt; parent, $taxonomy, $link, $separator, $nicename, $visited);\n\n    }\n\n    if ($link) {\n        \/\/ nothing, can't get this working :(\n    } else    \n        $chain .= $name . $separator;    \n    return $chain;    \n}\n<\/code><\/pre>\n<p>Then you need to flush your permalinks (just load your permalinks settings page).<\/p>\n<p>Now everything &#8216;should&#8217; work hopefully!  Go make a bunch of taxonomy terms and nest them correctly, then make some custom post type posts and categorize them correctly.  You can also make a page with the slug <code>basename<\/code>, and everything should work the way I specified in my question.  You may want to create some custom taxonomy archive pages to control how they look and add some kind of <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/wordpress.org\/extend\/plugins\/taxonomy-widget\/\">taxonomy widget<\/a> plugin to show your nested categories in the sidebar.<\/p>\n<p>Hope that helps you! <\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">10<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] After combining a bunch of pieces of other answers I got it working! So here&#8217;s the solution for those of you who are struggling with this too: This post and this one helped me out some, so thanks to those guys. Note, all this code, plus your initial custom post type and taxonomy registration &#8230; <a title=\"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/\" aria-label=\"More on [Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[627],"tags":[643,648,650,649],"class_list":["post-4183","post","type-post","status-publish","format-standard","hentry","category-wordpress","tag-custom-post-types","tag-custom-taxonomy","tag-hierarchical","tag-permalinks"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] After combining a bunch of pieces of other answers I got it working! So here&#8217;s the solution for those of you who are struggling with this too: This post and this one helped me out some, so thanks to those guys. Note, all this code, plus your initial custom post type and taxonomy registration ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-21T16:24:55+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name\",\"datePublished\":\"2022-08-21T16:24:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/\"},\"wordCount\":389,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"custom-post-types\",\"custom-taxonomy\",\"hierarchical\",\"permalinks\"],\"articleSection\":[\"WordPress\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/\",\"name\":\"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-08-21T16:24:55+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name - JassWeb","og_description":"[ad_1] After combining a bunch of pieces of other answers I got it working! So here&#8217;s the solution for those of you who are struggling with this too: This post and this one helped me out some, so thanks to those guys. Note, all this code, plus your initial custom post type and taxonomy registration ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/","og_site_name":"JassWeb","article_published_time":"2022-08-21T16:24:55+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name","datePublished":"2022-08-21T16:24:55+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/"},"wordCount":389,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["custom-post-types","custom-taxonomy","hierarchical","permalinks"],"articleSection":["WordPress"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/","url":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/","name":"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-08-21T16:24:55+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-permalink-structure-with-custom-taxonomies-and-custom-post-types-like-base-name-parent-tax-child-tax-custom-post-type-name\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] How to create a permalink structure with custom taxonomies and custom post types like base-name\/parent-tax\/child-tax\/custom-post-type-name"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/4183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=4183"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/4183\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=4183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=4183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=4183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}