具有自定义永久链接结构的页面作为存档不起作用

时间:2018-08-02 12:50:56

标签: wordpress

我有一个名为“ 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”是错误的。

谢谢!

2 个答案:

答案 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识别正确的(可辩论的...)永久链接结构。