Categories' hierarchy in URL

时间:2015-02-14 作者:zkvvoob

我目前正在处理的网站中的帖子都有多个层次分类。例如:

Source
- Books
-- Moby Dick
-- Sherlock Holmes
永久链接设置为/%category%/%postname%/. 然而,一篇文章的URL并不包括所有的子类别——我得到的只是site.com/source/books/*postname*, 尽管这篇文章在来源上没有分类,但只在书籍+白鲸上。

有人能帮我找出如何调整这种行为吗?

非常感谢。

2 个回复
最合适的回答,由SO网友:cybmeta 整理而成

磁导率/%category%/%postname%/ 将在URL中包括类别和子类别from top to first assigned child. 因此,如果您希望URLsite.com/source/books/moby-dick/*postname*, 你只能把这个职位分配给“白鲸”。默认情况下,仅将帖子分配给“Moby Dick”类别仍将在“source”和“books”类别存档下显示帖子。

SO网友:Macarthurval

这里有一个完整的解决方案,即使您有多个类别分配给您的帖子:

function permalink_full_categories( $cat, $cats, $post ) {

    $ordering = array();
    foreach( $cats as $index => $this_cat) {
        $ordering[$this_cat->parent] = $index;
    }

    $ordered = array();
    $i = 0;

    while( $ordering[$i] !== null ){
        array_push( $ordered, $cats[$ordering[$i]] );
        $i = $cats[$ordering[$i]]->term_id;
    }

    return end($cats);
}

add_filter( \'post_link_category\', \'permalink_full_categories\', 20, 3 );
它过滤永久链接类别,更改其默认行为,返回层次结构的最后一个类别。

因此,Wordpress核心会编写完整的层次结构类别url。

结束