wordpress删除文章链接的子分类

2021/11/3021:22:55wordpress删除文章链接的子分类已关闭评论 501

需求:在wordpress站点,删除链接的子分类(Remove sub category slug from permalink URL)

固定连接设置为:http://www.x.com/%category%/%post_id%/

如果分类(cat)存在子分类(sub-cat)时,固定链接则为http://www.x.com/cat/sub-cat/123/

希望是http://www.x.com/cat/123/

思路:修改post链接格式
添加自定义规则

主题函数文件添加代码

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;}

发现sanitize_title($cat->name); 是把分类的名称作为slug,觉得我的分类都添加了slug,于是我试着把
//if($cat->parent) { $subcats[] = sanitize_title($cat->name);
修改为
if($cat->parent) { $subcats[] = $cat->slug;
结果成功。

拓展

来自sola的分享:用.html作为url后缀时的分页链接问题

 

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin