it-swarm.com.de

Hierarchie der Kategorien in URL

Auf die Posts auf der Website, an der ich gerade arbeite, werden jeweils mehrere hierarchische Kategorien angewendet. Zum Beispiel:

Source
- Books
-- Moby Dick
-- Sherlock Holmes

Die Permalinks sind als /%category%/%postname%/ gesetzt. Die URL eines Posts enthält jedoch nicht alle Unterkategorien - alles, was ich erhalte, ist site.com/source/books/*postname*, obwohl der betreffende Post NICHT Kategorien in Source, sondern nur in Books + Moby Dick war.

Kann mir jemand helfen, dieses Verhalten anzupassen?

Vielen Dank.

2
zkvvoob

Die Permastruktur /%category%/%postname%/ enthält die Kategorien und Unterkategorien in der URL von oben bis zum zuerst zugewiesenen Kind . Wenn Sie also möchten, dass die URL site.com/source/books/moby-dick/*postname* lautet, müssen Sie den Beitrag nur "Moby Dick" zuweisen. Wenn Sie den Beitrag nur der Kategorie "Moby Dick" zuweisen, wird der Beitrag weiterhin standardmäßig in den Kategoriearchiven "Quelle" und "Bücher" angezeigt.

2
cybmeta

Hier haben Sie eine vollständige Lösung, auch wenn Sie Ihrem Beitrag mehrere Kategorien zugewiesen haben:

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 );

Es filtert die Permalink-Kategorie, ändert ihr Standardverhalten und gibt die letzte Kategorie der Hierarchie zurück.

Infolgedessen schreibt der Wordpress-Kern die vollständige URL der Hierarchiekategorie.

0