Permalink umschreiben 404 Konflikt – WordPress Taxonomies / CPT

Frage mich, ob jemand mir sagen könnte, warum Unterseiten (Kinderseiten) nicht mehr funktionieren (zB: www.mysite.com/type/childpage).

Ich habe eine Seite namens “Type” (funktioniert gut), und ich möchte Child-Seiten von “Type” (404 Fehler) haben – wie Sie sehen können, möchte ich auch die “Typ” -Schnecke Slug vor meinem benutzerdefinierten Beitrag haben Arten / Taxonomien.

Ich habe die Methode von diesem Link ohne Erfolg versucht: https://wordpress.stackexchange.com/questions/4127/custom-taxonomy-and-pages-rewrite-slug-conflict-gives-404

add_action( 'init', 'create_zombie_type' ); function create_zombie_type() { register_post_type('zombies', array( 'description' => 'Zombie custom post type', 'show_ui' => true, 'menu_position' => 5, 'menu_icon' => get_stylesheet_directory_uri() . '/images/zombies.png', 'exclude_from_search' => false, 'labels' => array( 'name' => 'Zombies', 'singular_name' => 'Zombie', 'add_new' => 'Add New Zombie', 'add_new_item' => 'Add New Zombie', 'edit' => 'Edit Zombies', 'edit_item' => 'Edit Zombie', 'new_item' => 'New Zombie', 'view' => 'View Zombie', 'view_item' => 'View Zombie', 'search_items' => 'Search Zombies', 'not_found' => 'No zombies found', 'not_found_in_trash' => 'No zombies found in Trash', 'parent' => 'Parent Zombie', ), 'hierarchical' => false, 'supports' => array('title','editor','excerpt', 'trackbacks','custom-fields', 'comments','revisions','thumbnail','author','page-attributes'), 'public' => true, 'rewrite' => array('slug' => 'type/%freshness%', 'with_front' => false), 'taxonomies' => array('freshness') ) ); } add_action( 'init', 'create_zombie_taxonomies' ); function create_zombie_taxonomies() { register_taxonomy( 'freshness', 'zombies', array( 'labels' => array( 'name' => 'Freshness', 'singular_name' => 'Freshness', 'search_items' => 'Search Freshness', 'popular_items' => 'Popular Freshness', 'all_items' => 'All Freshness', 'parent_item' => 'Parent Freshness', 'parent_item_colon' => 'Parent Freshness:', 'edit_item' => 'Edit Freshness', 'update_item' => 'Update Freshness', 'add_new_item' => 'Add New Freshness', 'new_item_name' => 'New Freshness Name' ), 'hierarchical' => true, 'public' => true, 'show_ui' => true, 'query_var' => 'freshness', 'show_tagcloud' => true, 'rewrite' => array( 'slug' => 'type', 'with_front' => false ) ) ); } function filter_post_type_link($link, $post) { if ($post->post_type != 'zombies') return $link; if ($cats = get_the_terms($post->ID, 'freshness')) $link = str_replace('%freshness%', array_pop($cats)->slug, $link); return $link; } add_filter('post_type_link', 'filter_post_type_link', 10, 2); 

Solutions Collecting From Web of "Permalink umschreiben 404 Konflikt – WordPress Taxonomies / CPT"

Sie könnten ausführliche Seitenregeln für jede Seite erstellen, die mit /type/ beginnt, aber Sie müssen auch in die Seitenerstellung eingreifen und so etwas machen, um auf dem neuesten Stand zu bleiben. Wenn Sie nicht so viele zusätzliche Seiten haben, ist es vielleicht einfacher, ausführliche Seitenregeln für alle Seiten zu erzwingen, dann wird WordPress dies für Sie tun.

 add_action( 'init', 'wpse16902_init' ); function wpse16902_init() { $GLOBALS['wp_rewrite']->use_verbose_page_rules = true; } 

Das einzige Problem ist jetzt, dass die Taxonomie-Regeln sogar noch darüber stehen (seit WP 3.1 denke ich). Aber mit den richtigen Hooks können wir die Seitenregeln abfangen und sie ganz oben platzieren.

 add_filter( 'page_rewrite_rules', 'wpse16902_collect_page_rewrite_rules' ); function wpse16902_collect_page_rewrite_rules( $page_rewrite_rules ) { $GLOBALS['wpse16902_page_rewrite_rules'] = $page_rewrite_rules; return array(); } add_filter( 'rewrite_rules_array', 'wspe16902_prepend_page_rewrite_rules' ); function wspe16902_prepend_page_rewrite_rules( $rewrite_rules ) { return $GLOBALS['wpse16902_page_rewrite_rules'] + $rewrite_rules; } 

Es ist möglich, dass die Umschreibungsregeln für den benutzerdefinierten Posttyp und die benutzerdefinierte Taxonomie für die /type/%freshness%/ URLs miteinander kollidieren. Sie möchten, dass es sich um ein Taxonomie-Archiv und nicht um ein benutzerdefiniertes Post-Archiv handelt. Wenn Sie Probleme damit haben, kehren Sie die Reihenfolge um, in der Sie sie registrieren: zuerst die Taxonomie, dann die benutzerdefinierte Beitragsart:

 register_taxonomy( 'freshness', array(), // Empty array, no post types linked array( 'rewrite' => array( 'slug' => 'type', ) ), ); register_post_type( 'zombie', array( 'rewrite' => array( 'slug' => 'type/%freshness%', ), 'taxonomies' => array( 'freshness' ), ), ); 

Zusätzliche Anmerkung: Wenn Ihre Taxonomie-URLs wirklich mit /type/ , könnten Sie in Konflikt mit Post-Format-Archiven geraten. /type/aside/ zeigt standardmäßig alle Beiträge des Formats “Beiseite” an. Diese Antwort geht davon aus, dass der benutzerdefinierte Post-Typ und die Taxonomie von Zombies nur ein Beispiel ist und Sie in Ihrem echten Problem ein anderes URL-Format verwenden.