Das macht mich verrückt und ich bin sicher, dass es einfach ist, aber nichts, wonach ich suche, hat eine einfache Struktur (alles ist sehr komplex).
Ich habe einen benutzerdefinierten Beitragstyp product_listing
und eine benutzerdefinierte Taxonomie von product_cat
(die hierarchisch ist und ähnliche Kategorien haben sollte).
Ich möchte einfach, dass meine URLs so aussehen:
mysite.com/products/category1/product-name1
mysite.com/products/category2/product-name2
Aber für mein ganzes Leben, egal was ich tue, bekomme ich die gefürchtete 404-Ausgabe. Seiten funktionieren in Ordnung und Beiträge funktionieren in Ordnung, aber meine benutzerdefinierten Beiträge funktionieren nicht richtig. Sie erscheinen als:
mysite.com/products/product-name1
mysite.com/products/product-name2
Welches funktioniert eigentlich ! Es ist nur so, dass ich meine benutzerdefinierte Taxonomie dort sehen möchte und ich in der Lage sein möchte, auf die taxonomy.php
Vorlage zuzugreifen, die ich eingerichtet habe, indem ich gehe zu:
mysite.com/products/category1/
mysite.com/products/category2/
Weder sind meine Schnecken gleich, noch möchte ich, dass sie gleich sind. Hier ist der Beitragstyp und der Taxonomieteil meiner functions.php
Datei:
///// CUSTOM POST TYPES /////
// register the new post type
register_post_type( 'product_listing', array(
'labels' => array(
'name' => __( 'Products' ),
'singular_name' => __( 'Product' ),
'add_new' => __( 'Add New' ),
'add_new_item' => __( 'Create New Product' ),
'edit' => __( 'Edit' ),
'edit_item' => __( 'Edit Product' ),
'new_item' => __( 'New Product' ),
'view' => __( 'View Products' ),
'view_item' => __( 'View Product' ),
'search_items' => __( 'Search Products' ),
'not_found' => __( 'No products found' ),
'not_found_in_trash' => __( 'No products found in trash' ),
'parent' => __( 'Parent Product' ),
),
'description' => __( 'This is where you can create new products on your site.' ),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'publicly_queryable' => true,
'exclude_from_search' => false,
'menu_position' => 2,
'menu_icon' => get_stylesheet_directory_uri() . '/images/tag_orange.png',
'hierarchical' => true,
'_builtin' => false, // It's a custom post type, not built in!
'rewrite' => array( 'slug' => 'products', 'with_front' => true ),
'query_var' => true,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions' ),
) );
//hook into the init action and call create_book_taxonomies when it fires
add_action( 'init', 'create_product_taxonomies', 0 );
//add_action('admin_init', 'flush_rewrite_rules');
//create two taxonomies, genres and writers for the post type "book"
function create_product_taxonomies() {
// Add new taxonomy, make it hierarchical (like categories)
$labels = array(
'name' => _x( 'Categories', 'taxonomy general name' ),
'singular_name' => _x( 'Category', 'taxonomy singular name' ),
'search_items' => __( 'Search Categories' ),
'all_items' => __( 'All Categories' ),
'parent_item' => __( 'Parent Categories' ),
'parent_item_colon' => __( 'Parent Categories:' ),
'edit_item' => __( 'Edit Category' ),
'update_item' => __( 'Update Category' ),
'add_new_item' => __( 'Add New Category' ),
'new_item_name' => __( 'New Category Name' ),
'menu_name' => __( 'Category' ),
);
register_taxonomy( 'product_cat', array( 'product_listing' ), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
//'rewrite' => true,
'rewrite' => array( 'slug' => '%category%', 'with_front' => true ),
) );
// Add new taxonomy, NOT hierarchical (like tags)
$labels = array(
'name' => _x( 'Scents', 'taxonomy general name' ),
'singular_name' => _x( 'Scent', 'taxonomy singular name' ),
'search_items' => __( 'Search Scents' ),
'popular_items' => __( 'Popular Scents' ),
'all_items' => __( 'All Scents' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Edit Scent' ),
'update_item' => __( 'Update Scent' ),
'add_new_item' => __( 'Add New Scent' ),
'new_item_name' => __( 'New Scent Name' ),
'separate_items_with_commas' => __( 'Separate scents with commas' ),
'add_or_remove_items' => __( 'Add or remove scents' ),
'choose_from_most_used' => __( 'Choose from the most used scents' ),
'menu_name' => __( 'Scents' ),
);
register_taxonomy( 'scent', 'product_listing', array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
//'rewrite' => array( 'slug' => 'scents' ),
) );
}
Ich habe auch eine andere benutzerdefinierte Taxonomie, von scents
der ich im Idealfall eine Art freundliche URL haben möchte, aber ich bin offener dafür. Ich möchte vielleicht auf eine Liste aller Düfte zugreifen, mysite.com/products/scents
aber sie müssen nicht kategoriespezifisch sein.
Kann mir jemand helfen?
quelle
product/cat-name/product-name
? (Beachten Sie die Singularität) Das Problem ist, dass die Umschreiberegel für die Taxonomie-Paginierung nicht ausgelöst wird, da sie von einer früheren Regel für einzelne Produkte erfasst wird!products/
) und einzelnen Gegenständen (product/
) gibt. Und nein, ich würde das "vordere Verzeichnis" behalten - es hilft, eine klare Unterscheidung von Posts und Seiten zu behalten, und sonst könnten Sie unter Leistungsproblemen leiden (z. B. ausführliche Umschreibungsregeln).Danke @TheDeadMechanic, deine Antwort hat mir geholfen, aber nur teilweise. Ich wollte das Gleiche tun, worum @RodeoRamsey gebeten hatte, aber mit verschachtelten Kategorien (dh:)
mysite.com/products/category1/child-category-1/grandchild-category-1/product-name
und Ihre Lösung funktionierte dafür nicht.Ich habe schließlich eine erweiterte Lösung für meine Frage gefunden, die funktioniert. Wenn also jemand verschachtelte Kategorien / Unterkategorien benötigt, können Sie eine detaillierte Lösung für meine eigene Frage anzeigen. Hoffe es hilft anderen und danke für die ersten Schritte.
quelle
Ich bin mir nicht sicher, ob wp diese Struktur standardmäßig unterstützt - aber Sie können sehr einfach Ihre eigenen Umschreiberegeln erstellen, um dies zu tun.
Überprüfen Sie eine vorherige Antwort hier aus Autor URL Rewrite .
Sie können die Zeile ändern
zu so etwas wie
Der product_cat-Teil hier ist möglicherweise überflüssig - ich bin nicht sicher, ob er benötigt wird.
Sie können beliebige Regeln hinzufügen, die Vorrang vor den eingebauten haben.
quelle
Ja, es hat mich verrückt gemacht, bevor ich den Permalink für den benutzerdefinierten Post-Typ gesetzt habe. Ich habe ein Plugin für den benutzerdefinierten Beitragstyp gefunden. Es ist sehr einfach zu bedienen. http://wordpress.org/extend/plugins/custom-post-permalinks/ WP sollte dies als Kernfeature hinzufügen! Löwe
quelle
Eigentlich ist es ziemlich einfach. Sie brauchen nur eine Zeile. Hier ist mein Code
Und auf die generierte Taxonomie für meine Reviews CPT von GenerateWP.com angewendet. Ich verwende dies auf meiner eigenen WordPress-Site, https://www.wpstarters.com
Alles, was Sie dazu brauchen, setzen Sie das Array 'rewrite' => ('hierarchical' => true),
quelle