感谢Rarst提供的提示
下面是我为两个类似的分类法/帖子类型设置完成重定向的代码
这基本上与我在专栏中指出的一样。如果我点击一篇文章并为其指定了顶级术语,url将从domain/series/post/
至
domain/series/
它只是从url的末尾去掉帖子的slug。
显然,必须正确设置CPT、分类法和重写才能使用它。
我添加了$type
参数设置为theme_perform_redirect()
函数,以便以后可以为其他类型的重定向添加功能。
function theme_perform_redirect($post, $taxonomy, $type) {
if ($type == \'top-level\') {
$top_level_terms = get_top_level_term_ids( $taxonomy );
$post_terms = wp_get_post_terms( $post->ID, $taxonomy );
if ( in_array($post_terms[0]->term_id, $top_level_terms)) {
// This is the main/top post, redirect it to the archive
$to_strip = $post->post_name;
$permalink = get_permalink( $post->ID );
$go_here = str_replace($to_strip."/", "", $permalink);
wp_redirect( $go_here );
exit();
}
}
}
function theme_redirects() {
global $post;
if ( is_single() ) {
if (is_singular( \'cartoon-series\' )) {
heman_perform_redirect($post, \'cartoon-features\', \'top-level\');
} else if (is_singular( \'movies\' )) {
heman_perform_redirect($post, \'movie-features\', \'top-level\');
}
}
}
add_action( \'template_redirect\', \'theme_redirects\' );
请注意
get_top_level_term_ids()
是我自己的功能。它只获取父项为0的所有术语。。。。只是在一个更整洁的包装中。:-)
谢谢