我有一个名为“ references”的自定义帖子类型,并添加了一个函数,因此可以将类别用作永久链接的一部分。我在声明自定义子弹,如下所示:
'slug' => '/references/%category%',
,然后使用过滤器对其进行操作:
function change_post_link($post_link, $id = 0) {
$post = get_post($id);
if ($post->post_type == 'references') {
$terms = wp_get_object_terms($post->ID, 'category');
if ($terms) {
return str_replace('%category%', $terms[0]->slug, $post_link);
}
}
return $post_link;
}
那部分工作正常,我得到的网址是“ / references / cars / the-red-one”。
但是现在我在“ / references / cars”处没有页面(默认类型),只有在我不使用占位符作为自定义帖子类型时,该页面才起作用。
您对如何解决这个问题有任何想法吗?顺便说一句,“ has_archive”是错误的。
谢谢!
答案 0 :(得分:0)
您可以使用这种方式
查找类别子弹:
$categories = get_categories();
foreach ($categories as $cat)
{
$cat_slug = $cat->slug;
}
创建新网址:
$new_url = esc_url(add_query_arg(array( 'category' => $cat_slug,), $old_url));
答案 1 :(得分:0)
这可能不是最佳解决方案,但至少现在可以使用。在这里,您去了:
我添加了一个隐藏的虚拟帖子类型,其中包含了“引用/虚拟” 。这似乎迫使Wordpress识别正确的(可辩论的...)永久链接结构。