Verwenden Sie den Kategorienamen anstelle von Kategorie-Slugs in Permalinks

So erstellen Sie eine Permalink-Struktur, die wie folgt endet:

/category-name/post-name/ 

Anstatt von:

 /category-slug/post-name/ 

Standardmäßig bietet WordPress %category% tag strucure als “Eine bereinigte Version des Kategorienamens (Kategorie-Slug-Feld im Bereich” New / Edit Category “) an.

Wie kann ich den Kategorienamen anstelle von Kategorie-Slugs in Permalinks verwenden?

Beachte, dass ich nicht die einfachste Lösung benötige, um meine Nacktschnecken mit meinen Kategorienamen gleichzusetzen. In der Tat muss der Kunde im Bereich der Edit-Post sehen: die Kategorien in einer bestimmten nicht-alpahbetischen Reihenfolge. Also habe ich das geschafft, indem ich eine digitale Nummer für die Kategorie als Slug und Reihenfolge gegeben habe, die Kategorien nach Slug im ASC-Modus zeigt:

 add_filter( 'get_terms_args', 'wpse_53094_sort_get_terms_args', 10, 2 ); function wpse_53094_sort_get_terms_args( $args, $taxonomies ) { global $pagenow; if( !is_admin() || ('post.php' != $pagenow && 'post-new.php' != $pagenow) ) return $args; $args['orderby'] = 'slug'; $args['order'] = 'ASC'; return $args; } 

Ich denke, wenn ich nicht tf Lösung zu verwenden, werde ich nach einem Code oder einem Plugin suchen, die Meta-Feld für Kategorien und Reihenfolge von diesem Feld im ASC-Modus hinzugefügt. Dann werde ich meine Schnecken in den gleichen Namen von Kategorien umbenennen. Was denkst du über diesen Ansatz?

Danke für deinen Kommentar

Solutions Collecting From Web of "Verwenden Sie den Kategorienamen anstelle von Kategorie-Slugs in Permalinks"

Ich habe das nicht getestet, aber das sollte tun, was du willst. Setzen Sie folgendes in Ihre functions.php :

 add_filter('rewrite_rules_array', 'new_category_name_rewrite_rule'); function new_category_name_rewrite_rule($rules) { $new_rules = array(); $categories = get_categories(); foreach ($categories as $category) { $cat_name = preg_replace('#\s+#', '-', $category->name); $new_rules['/'.$category->slug.'/'] = '/'.urlencode($cat_name).'/'; } return $new_rules + $rules; }