Wordpress Performance Wordpress SEO Wordpress Security Wordpress Themes Wordpress Hosting Mein Setup Das Buch

Category aus Permalink entfernen

Category aus Permalink entfernen

Permalinks ohne Category

Egal wie ihr eure Permalinks eingestellt habt, WordPress fügt bei Kategorien immer automatisch ein “category” hinzu. Statt einem “www.website.de/meine-kategorie”, bekommt ihr also ein “www.website.de/category/meine-kategorie” und zwar immer, es lässt sich einfach nicht vermeiden. Das ist recht nervig, denn zum einen ist das vollkommen unnötig, zum anderen wird die Url damit deutlich länger. Längere Url’s sind schlecht für Google, außerdem sieht das “category” für Benutzer unprofessionell aus, vor allem ist es aber einfach fehl am Platze und überflüssig. Nun gibt es verschiedene Wege das Ganze zu entfernen. Einige Seo-Plugins für WordPress erledigen dies beispielsweise gleich mit, auch gibt es das sehr beliebte WP No Category Base Plugin für WordPress, welches die Umleitung ebenfalls sehr zuverlässig und einfach übernimmt. Doch Plugins sind immer eine Belastung, ein schlankes Snippet hat bei mir daher auch stets den Vortritt. Zum Glück gibt es auch für diesen Zweck ein paar Zeilen Code und zwar sogar ein offizielles und sehr minimalistisches. Kleiner jedenfalls als ein extra Plugin.

1. Folgendes in die Functions.php eures Themes einfügen

add_filter( 'category_rewrite_rules', 'filter_category_rewrite_rules' );
function filter_category_rewrite_rules( $rules ) {
 
    $categories = get_categories( array( 'hide_empty' => false ) );
 
    if ( is_array( $categories ) && ! empty( $categories ) ) {
        $slugs = array();
 
        foreach ( $categories as $category ) {
            if ( is_object( $category ) && ! is_wp_error( $category ) ) {
                if ( 0 == $category->category_parent )
                    $slugs[] = $category->slug;
                else
                    $slugs[] = trim( get_category_parents( $category->term_id, false, '/', true ), '/' );
            }
        }
 
        if ( ! empty( $slugs ) ) {
            $rules = array();
 
            foreach ( $slugs as $slug ) {
                $rules[ '(' . $slug . ')/feed/(feed|rdf|rss|rss2|atom)?/?$' ] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
                $rules[ '(' . $slug . ')/(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
                $rules[ '(' . $slug . ')(/page/(\d)+/?)?$' ] = 'index.php?category_name=$matches[1]&paged=$matches[3]';
            }
        }
    }
    return $rules;
}

2. Folgendes zur Sicherheit in eure .htaccess einfügen:

RewriteRule ^category/(.+)$ /$1 [R=301,L]

2. Unter “Einstellungen -> Permalinks” einmal auf speichern klicken, um die Permalinks zu aktualisieren.

Category bei den Permalinks entfernen

Mit dem recht kleinen und deshalb auch sehr performanten Snippet, wird das “category” komplett aus den Url’s von WordPress entfernt und sollte nirgendswo mehr auftauchen, weil es nun korrekt umgeleitet wird. Das Snippet ist kleiner als ein extra Plugin, ist mit wenig Aufwand schnell eingebaut und arbeitet still und leise im Hintergrund. Wer meint er könnte das “category” anders entfernen, darf sich gerne melden, denn im Normalfall gibt es bei den sonst noch bekannten Methoden zwei große Probleme. Zum einen funktionieren die Blätterseiten in den Kategorien nicht mehr korrekt, zum anderen leitet ein in WordPress angelegtes Menü nicht mehr richtig um. Diese Lösung hier ist für mich daher die beste, schnellste und effektivste Methode, das überflüssige und nervige “category” in den Permalinks loszuwerden.



Wordpress Performance eBook