跳至正文

WordPress 如何从永久链接permalink URL中删除子类目

最近在使用WordPress搭建一个新的企业网站,所有的信息发布在标准帖子里,分了三级类目,一级类目里有项目,视频,产品,博客,文章永久链接希望使用相应的一级类目名称,让人一看URL就清楚这是关于项目,视频,产品还是博文。所以Permalink 结构我选择了/%category%/%postname%/,这时问题来了,三级类目下的产品URL为:domain.com/products/product-1/product-2/product-name,而我希望的是URL是domain.com/products/product-name。

几经折腾,尝试,最后确定,在主题文件functions.php中添加如下代码:

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':
        $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;}

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注