最近在使用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;}