这可能会有点要求很高,因此下面的代码片段应该为您研究和构建更完整的解决方案提供基础:
add_action( \'template_redirect\', function() {
if ( is_category() ) {
$term = get_queried_object();
if ( isset( $term->parent ) && $term->parent ) {
global $wp;
$request_url = trailingslashit( get_site_url( get_current_blog_id(), $wp->request ) );
$link = get_term_link( $term );
if ( ! is_wp_error( $link ) ) {
if ( strpos( $request_url, trailingslashit( $link ) ) !== 0 ) {
wp_safe_redirect( $link, 301 );
}
}
}
}
} );
此解决方案也可用于分页,但如果您试图访问“不正确”的子类别分页URL,它将重定向到分页的开始处(
http://www.example.com/category/child/page/2/
将重定向到
http://www.example.com/category/parent/child/
-- 这可以通过检查是否有分页请求并相应地构建重定向链接来解决)