Umbenennung der Taxonomie 404

Ich habe meine Taxonomie-URL auf den Namen meines Beitragstyps “Filter” umgeschrieben.

Weil ich dies getan habe, funktioniert meine Seitennummerierung nicht mehr auf der URL:

http://www.website.com/filter/term-name/

Also wenn ich besuche

http://www.website.com/filter/term-name/seite/2

Ich bekomme einen 404

Ich denke, das liegt daran, dass WordPress Filter jetzt als den Post-Typ und die Taxonomie sieht.

Wenn ich 'slug' => 'filter' ändere, zum Beispiel 'slug' => 'test' , funktioniert es gut. Weiß jemand, wie ich zu WordPress sagen kann, dass “Filter” in diesem Fall die Taxonomie ist.

 $args = array( 'labels' => $labels, 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => true, 'show_tagcloud' => true, 'rewrite' => array( 'slug' => 'filter', 'with_front' => false ), ); register_taxonomy( 'service', 'filter', $args ); 

Irgendwelche Vorschläge, warum das nicht funktioniert?

Solutions Collecting From Web of "Umbenennung der Taxonomie 404"

Auf der Suche nach einer Lösung habe ich diesen Beitrag erhalten: Taxonomien mit demselben Slug wie CPT

Also, im Grunde müssen Sie benutzerdefinierte Rewrite-Regeln hinzufügen, ich habe die Lösung nicht getestet, aber ich denke, es wird für Sie funktionieren.

 /* Register CPT */ function wpse_138987_post_type_filter() { register_post_type('filter', array( 'labels' => array( 'name' => 'Filter', 'all_items' => 'All Posts' ), 'public' => true )); } add_action('init', 'wpse_138987_post_type_filter'); // register taxonomy function wpse_138987_taxonomy_service() { register_taxonomy('service', array('filter'), array( 'labels' => array( 'name' => 'Service' ), 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'show_admin_column' => true, 'show_in_nav_menus' => true, 'show_tagcloud' => true, 'rewrite' => array('slug' => 'filter') )); } add_action('init', 'wpse_138987_taxonomy_service'); /* * Replace Taxonomy slug with Post Type slug in url */ function taxonomy_slug_rewrite($wp_rewrite) { $rules = array(); // get all custom taxonomies $taxonomies = get_taxonomies(array('_builtin' => false), 'objects'); // get all custom post types $post_types = get_post_types(array('public' => true, '_builtin' => false), 'objects'); foreach ($post_types as $post_type) { foreach ($taxonomies as $taxonomy) { // go through all post types which this taxonomy is assigned to foreach ($taxonomy->object_type as $object_type) { // check if taxonomy is registered for this custom type if ($object_type == $post_type->rewrite['slug']) { // get category objects $terms = get_categories(array('type' => $object_type, 'taxonomy' => $taxonomy->name, 'hide_empty' => 0)); // make rules foreach ($terms as $term) { $rules[$object_type . '/' . $term->slug . '/?$'] = 'index.php?' . $term->taxonomy . '=' . $term->slug; } } } } } // merge with global rules $wp_rewrite->rules = $rules + $wp_rewrite->rules; } add_filter('generate_rewrite_rules', 'taxonomy_slug_rewrite'); 

Die obige Lösung funktioniert nur, wenn Sie Permalinks mit Postname verwenden.

Stellen Sie sicher, dass Sie den Permalink nach dem Hinzufügen des Codes speichern, um die Umschreibregeln zu löschen.

Außerdem müssen Sie Dateien für Custom Post Type Archive und Taxonomy hinzufügen:

  archive-filter.php single-filter.php taxonomy-service.php 

Gehe zu Einstellungen / Permalinks und speichere Änderungen mit der Struktur /% postname% /.