To doprowadza mnie do szału i jestem pewien, że to proste, ale nic, czego szukam, nie ma prostej struktury (wszystko jest bardzo złożone).
Mam niestandardowy typ posta product_listing
i niestandardową taksonomię product_cat
(która jest hierarchiczna i powinna mieć podobne kategorie).
Chcę po prostu, aby moje adresy URL wyglądały tak:
mysite.com/products/category1/product-name1
mysite.com/products/category2/product-name2
Ale na całe moje życie, bez względu na to, co robię, dostaję przerażający problem 404. Strony działają dobrze, a posty działają dobrze, ale moje niestandardowe posty nie działają poprawnie. Wyświetlają się jako:
mysite.com/products/product-name1
mysite.com/products/product-name2
Co faktycznie działa ! Po prostu chcę zobaczyć tam swoją niestandardową systematykę i chcę mieć dostęp do taxonomy.php
szablonu, który skonfigurowałem, przechodząc do:
mysite.com/products/category1/
mysite.com/products/category2/
Żadne z moich ślimaków nie są takie same i nie chcę, żeby były. Oto typ wpisu i część taksonomiczna mojego functions.php
pliku:
///// 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' ),
) );
}
Mam też inną niestandardową taksonomię scents
, którą idealnie chciałbym mieć jakiś przyjazny adres URL, ale jestem bardziej otwarty na ten temat. Chciałbym uzyskać dostęp do listy wszystkich zapachów, mysite.com/products/scents
ale nie muszą one być specyficzne dla kategorii.
Czy ktoś może mi pomóc?
źródło
product/cat-name/product-name
? (zwróć uwagę na osobliwość) Problem polega na tym, że reguła przepisywania nie jest uruchamiana, ponieważ podział na taksonomię nie jest uruchamiany, ponieważ zostaje złapany przez wcześniejszą regułę dla pojedynczych produktów!products/
) a pojedynczymi elementami (product/
). I nie, trzymałbym „katalog główny” - pomaga to zachować wyraźne rozróżnienie od postów i stron, a w przeciwnym razie możesz skończyć z problemami z wydajnością (tj. Szczegółowe reguły przepisywania).Dzięki @TheDeadMechanic, twoja odpowiedź pomogła mi, ale tylko częściowo. Chciałem zrobić to samo, o co prosił @ RodeoRamsey, ale z zagnieżdżonymi kategoriami (tj .:),
mysite.com/products/category1/child-category-1/grandchild-category-1/product-name
a twoje rozwiązanie nie zadziałało.W końcu wymyśliłem rozszerzone rozwiązanie mojego pytania, które działa, więc jeśli ktokolwiek potrzebuje zagnieżdżonych kategorii / podkategorii, możesz zobaczyć szczegółowe rozwiązanie na moje pytanie. Mam nadzieję, że pomaga innym i dziękuję za pierwsze kroki.
źródło
Nie jestem pewien, czy wp obsługuje tę strukturę od razu po wyjęciu z pudełka - ale możesz bardzo łatwo stworzyć własne reguły przepisywania.
Sprawdź poprzednią odpowiedź tutaj . Przepisz adres URL autora .
Możesz zmienić linię
do czegoś takiego
część product_cat tutaj może być zbędna - nie jestem pewien, czy jest potrzebna.
Możesz dodać dowolne reguły, które będą miały wyższy priorytet niż te wbudowane.
źródło
Tak, doprowadzało mnie to do szału, zanim ustawiłem bezpośredni link do niestandardowego typu postu. Znalazłem wtyczkę do obsługi niestandardowego typu postu. Jest bardzo łatwy w użyciu. http://wordpress.org/extend/plugins/custom-post-permalinks/ WP powinien dodać to jako podstawową funkcję! Lew
źródło
W rzeczywistości jest to dość łatwe. Potrzebujesz tylko jednej linii. Oto mój kod
I zastosowałem się do wygenerowanej taksonomii dla moich recenzji CPT z GenerateWP.com. Używam tego na własnej stronie WordPress, https://www.wpstarters.com
Wystarczy, że wstawisz „rewrite” => tablica („hierarchiczna” => prawda),
źródło