我添加了下面的代码,并成功地更改了分类术语的CPT slug。我的博客permalinks是/article/%postname%,以防您怀疑,我希望保持这种方式,这样就不会与CPT发生冲突。
它工作得很好,我去掉了单个CPT的permalink(“列表”)中的CPT slug。
function listing_type_link_filter_function( $post_link, $id = 0, $leavename = FALSE ) {
if ( strpos(\'%listing_type%\', $post_link) === \'FALSE\' ) {
return $post_link;
}
$post = get_post($id);
if ( !is_object($post) || $post->post_type != \'listing\' ) {
return $post_link;
}
$terms = wp_get_object_terms($post->ID, \'listing_type\');
if ( !$terms ) {
return str_replace(\'/listing_type\', \'/\', $post_link);
}
return str_replace(\'%listing_type%\', $terms[0]->slug, $post_link);
}
add_filter(\'post_type_link\', \'listing_type_link_filter_function\', 1, 3);
它工作正常,而不是:
mysite.com/listing_types/tours/tour-name (CPT "listing" post)
这些帖子显示为:
mysite.com/tours/tour-name
并且可以正确地找到以下任一项
mysite.com/listing_type/tours/tour-name
mysite.com/listings/tours/tour-name
mysite.com/listing_types/tours/tour-name
mysite.com/listing/tours/tour-name
现在,我需要将相同或类似的过滤器与术语归档链接过滤器挂钩,如果有,我找不到。
因此
mysite.com/cpt_slug/taxonomy_term
(存档页)
我会得到
mysite.com/taxonomy_term
(存档页)
…因为我的网站中最重要的是那些术语:listing\\u类型(旅游、景点、活动),但我不能让“listings”或“listing\\u类型”显示出来,即使它们是我的列表。
您知道什么钩子,以及我应该如何过滤它以替换术语归档页链接中的listing\\u类型slug吗?
或者更容易将常规permalinks设置页面设置为%term%/%postname%,并让CPT使用它,然后定制常规帖子因为大多数违约都会对CPT有利,而且这些职位没有条款。
谢谢