您可以筛选term_link
修改API生成的任何分类URL。在这种情况下,我们只需要过滤器,因为默认重写规则将处理传入请求的这种修改。如果您正在进行任何引入新URL模式的更改,您还需要添加新规则或更改现有规则,以便这些新URL能够成功解析为正确的查询,而不仅仅是404。
如果你看看get_term_link
API函数源,您将看到它检查是否为层次分类法的分支。我只是复制/粘贴了非层次结构的一些位,因此输出与非层次结构的项相同。
add_filter( \'term_link\', \'wpd_term_link_filter\', 10, 3 );
function wpd_term_link_filter( $url, $term, $taxonomy ) {
if( \'category\' == $taxonomy ){
global $wp_rewrite;
$termlink = $wp_rewrite->get_extra_permastruct( $taxonomy );
$termlink = str_replace( "%$taxonomy%", $term->slug, $termlink );
$url = home_url( user_trailingslashit($termlink, \'category\') );
}
return $url;
}