我正在使用此解决方案从我的博客文章的网址中删除子类别: Remove sub category slug from permalink URL of blog post and custom post type in WordPress
add_filter('post_link','custom_post_type_link',10,3);
function custom_post_type_link($permalink,$post,$leavename) {
if (!gettype($post) == 'post') {
return $permalink;
}
switch ($post->post_type) {
case 'post':
//$permalink = get_home_url() . '/' . $post->post_name . '/';
$cats = get_the_category($post->ID);
$subcats = array();
foreach( $cats as $cat ) {
$cat = get_category($cat->term_id);
if($cat->parent) { $subcats[] = sanitize_title($cat->name); }
}
if($subcats) {
foreach($subcats as $subcat) {
$subcat = $subcat.'/';
$permalink = str_replace($subcat,"",$permalink);
}
}
break;
}
return $permalink;}
它工作正常,但是代码仍然存在一些问题。
如果我有这样的网址:
www.myblog.com/parentcategory/ 子类别的名称 / slugpost
我会得到这个:
www.myblog.com/parentcategory/slugpost
这正是我想要的。
但是,如果我有这样的网址:
www.myblog.com/parentcategory/ 子类别的名称 / slugpost-with- 子类别的名称
我会得到这个:
www.myblog.com/parentcategory/slugpost-with- (提示子弹的末尾)
...以及指向本文的每个链接的404页。
所以问题在于,当子类别文本出现在子句的帖子中时,代码还将删除URL的这一部分。
有人知道如何解决这个问题吗?
谢谢!