Kategorie-URL anpassen

Ich habe gesucht und habe nicht die Antworten gefunden. Standardmäßig habe ich:

  • example.com/blog (Blogarchiv)
  • example.com/blog/entry (einzelner Eintrag)
  • example.com/blog/category/announcements (einzelne Taxonomieansicht)

Jetzt habe ich einen benutzerdefinierten Post-Typ und Taxonomie (Kategorien) erstellt, um damit zu gehen, aber ich habe Probleme beim Spiegeln der URL-Struktur des Blogs. Zum Beispiel ist mein Ziel:

  • example.com/talks (Gesprächsarchiv)
  • example.com/talks/entry (single talk entry)
  • example.com/talks/category/support (einzelne Taxonomieansicht)

Hier ist, was ich bisher habe:

function uc_add_talks_post_type() { $talks_labels = array( 'name' => 'Talks', 'singular_name' => 'Talk', 'all_items' => 'All Talks', … ); $talks_args = array( 'labels' => $talks_labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'menu_position' => 5, 'rewrite' => array( 'slug' => 'talks', 'with_front' => false ), 'has_archive' => 'talks', ); $talks_cat_args = array( 'hierarchical' => true, 'labels' => array( 'name' => 'Talk categories', 'singular_name' => 'Talk category', … ), 'show_admin_column' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'talks', 'with_front' => false ), ); register_post_type( 'uc_talks', $talks_args ); register_taxonomy( 'uc_talks_cat', array('uc_talks'), $talks_cat_args ); } add_action( 'init', 'uc_add_talks_post_type'); 

Solutions Collecting From Web of "Kategorie-URL anpassen"

Ich habe das herausgefunden, indem ich diesen Artikel gelesen habe . Es war sehr einfach, alles was ich tun musste war:

  1. Ändere die $talks_cat_args[rewrite][slug] von 'talks' in 'talks/category' (was ich zuvor schon versucht hatte), aber verpasst …
  2. Stellen Sie sicher, dass register_taxonomy vor register_post_type .

Lesen Sie den Artikel, aber das liegt hauptsächlich daran, “wie WP_Rewrite funktioniert, da der process der Entschlüsselung von Permalinks in gewisser Weise von oben nach unten erfolgt”

Für die Nachkommen hier ist der endgültige Code (mit ein wenig Neuformatierung). Ich kann nicht behaupten, dass dies der beste oder sauberste Weg ist, dies zu tun, denn ich bin ziemlich neu in WordPress & PHP, aber es funktioniert so weit.

  $talks_labels = array( 'name' => 'Talks', 'singular_name' => 'Talk', 'all_items' => 'All Talks', 'add_new' => 'Add new', 'add_new_item' => 'Add new Talk', 'edit_item' => 'Edit Talk', 'new_item' => 'New Talk', 'view_item' => 'View Talk', 'search_items' => 'Search Talks', 'not_found' => 'No Talks found', 'not_found_in_trash' => 'No Talks found in Trash', ); $talks_args = array( 'labels' => $talks_labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'menu_position' => 5, 'rewrite' => array( 'slug' => 'talks', 'with_front' => false ), 'has_archive' => 'talks', ); $talks_cat_labels= array( 'name' => 'Talk categories', 'singular_name' => 'Talk category', 'search_items' => 'Search talk categories', 'all_items' => 'All talk categories', 'parent_item' => 'Parent talk category', 'parent_item_colon' => 'Parent talk category:', 'edit_item' => 'Edit talk category', 'update_item' => 'Update talk category', 'add_new_item' => 'Add new talk category', 'new_item_name' => 'New talk category name', ); $talks_cat_args = array( 'hierarchical' => true, 'labels' => $talks_cat_labels, 'show_admin_column' => true, 'show_ui' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'talks/category', 'with_front' => false ), ); register_taxonomy( 'uc_talks_cat', array('uc_talks'), $talks_cat_args ); register_post_type( 'uc_talks', $talks_args );