我的wordpress网站上有几个帖子。 他们中的大多数属于特定类别,但有些则不属于特定类别。
对于属于某个类别的所有帖子,我希望拥有以下永久链接结构: /%类别%/%postname%/
所有其他默认帖子都“自动”属于未分类的类别。 他们的URL结构看起来像这样/ uncategorized /%postname%/
我想将固定链接更改为以下内容:/%postname%/
有没有办法对属于未分类类别的固定链接进行例外处理?
提前致谢!
答案 0 :(得分:0)
The solution bellow为我工作。
在function.php中,只需添加:
if the post is category "uncategorized" or child of "uncategorized" as the main category, change the permalink rule of "/%category%/%postname%" to "/%postname%"
function my_pre_post_link( $permalink, $post, $leavename ) {
if( $post->post_type != 'post' ) return $permalink;
$cats = get_the_category($post->ID);
if( ! count($cats) ) return $permalink;
usort($cats, '_usort_terms_by_ID');
$category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post );
$category_object = get_term( $category_object, 'category' );
return _clear_uncategorized($category_object, $permalink);
}
function _clear_uncategorized($cat, $permalink) {
if( $cat->slug == 'uncategorized' ) {
return str_replace('%category%/', '', $permalink);
}
$parent = $cat->parent;
if ( !$parent )
return $permalink;
return _clear_uncategorized($parent, $permalink);
}
add_filter( 'pre_post_link', 'my_pre_post_link', 9, 3 );