Remove taxonomy base from url
<?php | |
add_filter("request", "ph_change_term_request", 1, 1); | |
function ph_change_term_request($query) | |
{ | |
$tax_name = "my_tax_name"; | |
if (isset($query["attachment"])) | |
{ | |
$include_children = true; | |
$name = $query["attachment"]; | |
} | |
else | |
{ | |
$include_children = false; | |
$name = (isset($query["name"])) ? $query["name"] : null; | |
} | |
$term = get_term_by("slug", $name, $tax_name); | |
if (isset($name) && $term && !is_wp_error($term)) | |
{ | |
if ($include_children) | |
{ | |
unset($query["attachment"]); | |
$parent = $term->parent; | |
while ($parent) | |
{ | |
$parent_term = get_term($parent, $tax_name); | |
$name = $parent_term->slug . "/" . $name; | |
$parent = $parent_term->parent; | |
} | |
} | |
else | |
{ | |
unset($query["name"]); | |
} | |
switch ($tax_name) | |
{ | |
case "category": | |
$query["category_name"] = $name; | |
break; | |
case "post_tag": | |
$query["tag"] = $name; | |
break; | |
default: | |
$query[$tax_name] = $name; | |
} | |
} | |
return $query; | |
} | |
add_filter("term_link", "ph_term_permalink", 10, 3); | |
function ph_term_permalink($url, $term, $taxonomy) | |
{ | |
$taxonomy_name = "my_tax_name"; | |
$taxonomy_slug = "my_tax_slug"; | |
if (strpos($url, $taxonomy_slug) === FALSE || $taxonomy != $taxonomy_name) | |
return $url; | |
$url = str_replace("/" . $taxonomy_slug, "", $url); | |
return $url; | |
} | |
add_action("template_redirect", "ph_old_term_redirect"); | |
function ph_old_term_redirect() | |
{ | |
$taxonomy_name = "my_tax_name"; | |
$taxonomy_slug = "my_tax_slug"; | |
if (strpos($_SERVER["REQUEST_URI"], $taxonomy_slug) === FALSE) | |
return; | |
if ((is_category() && $taxonomy_name == "category") || (is_tag() && $taxonomy_name == "post_tag") || is_tax($taxonomy_name)): | |
wp_redirect(site_url(str_replace($taxonomy_slug, "", $_SERVER["REQUEST_URI"])), 301); | |
exit(); | |
endif; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment