kategorie – Dodaj kategorię do niestandardowego adresu URL posta
Próbuję utworzyć niestandardowy post z niestandardową taksonomią i kategoriami. Struktura jest taka:
Produkt:
- Ma kategorie
- Ma taksonomię
Utwórz niestandardowy typ postu:
function create_alco_custom_post() {
$review_slug = 'reviews';
$labels = array(
'name' => __( 'Recenzje' ),
'singular_name' => __( 'Recenzja' ),
'add_new' => __( 'Nowa recenzja' ),
'add_new_item' => __( 'Dodaj nową recenzje' ),
'edit_item' => __( 'Edytuj recenzje' ),
'new_item' => __( 'Nowa recenzja' ),
'view_item' => __( 'Zobacz recenzje' ),
'search_items' => __( 'Szukaj w recenzjach' ),
'not_found' => __( 'Nie znaleziono recenzji' ),
'not_found_in_trash' => __( 'Nie znaleziono recenzji w koszu' ),
);
$args = array(
'labels' => $labels,
'menu_icon' => 'dashicons-format-quote',
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => '%review-category%','with_front' => true),
'hierarchical' => true,
'menu_position' => 0,
'exclude_from_search' => false,
'supports' => array(
'title',
'editor',
'thumbnail'
),
'taxonomies' => array('category')
);
register_post_type( 'review', $args );
}
add_action( 'init', 'create_alco_custom_post' );
Następnie dodaję taksonomię:
$labels = array(
'name' => __( 'Producenci', 'alkowiki' ),
'singular_name' => __( 'Producent', 'alkowiki' ),
'search_items' => __( 'Wyszukaj wśród producentów', 'alkowiki' ),
'popular_items' => __( 'Popularni producenci', 'alkowiki' ),
'all_items' => __( 'Wszystcy producenci', 'alkowiki' ),
'parent_item' => __( 'Producent rodzic', 'alkowiki' ),
'edit_item' => __( 'Edytuj producenta', 'alkowiki' ),
'update_item' => __( 'Aktualizuj producenta', 'alkowiki' ),
'add_new_item' => __( 'Dodaj nowego producenta', 'alkowiki' ),
'new_item_name' => __( 'Nowy producent', 'alkowiki' ),
'separate_items_with_commas' => __( 'Oddziel producentów przecinkami', 'alkowiki' ),
'add_or_remove_items' => __( 'Dodaj lub usuń producentów', 'alkowiki' ),
'choose_from_most_used' => __( 'Wybierz z najczęściej wykorzystywanych producentów', 'alkowiki' )
);
$args = array(
'labels' => $labels,
'public' => true,
'hierarchical' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'query_var' => true
);
register_taxonomy( 'producents', 'review', $args );
I na koniec zmieniam strukturę linków:
add_filter('post_link', 'category_permalink', 1, 3);
add_filter('post_type_link', 'category_permalink', 1, 3);
function category_permalink($permalink, $post_id, $leavename) {
if (strpos($permalink, '%review-category%') === FALSE) return $permalink;
// Get post
$post = get_post($post_id);
if (!$post) return $permalink;
// Get taxonomy terms
$terms = wp_get_object_terms($post->ID, 'category');
if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0]))
$taxonomy_slug = $terms[0]->slug;
else $taxonomy_slug = 'nieskateryzowane';
return str_replace('%review-category%', $taxonomy_slug, $permalink);
}
Moja struktura postów w ustawieniach WP to /%category%/%postname%/
A adresy URL postów są tworzone poprawnie, archiwa kategorii wyświetlają posty poprawnie, permlinki są tworzone tak, jak chciałem, ale kiedy przechodzę do strony produktu (struktura adresu URL witryna/kategoria/nazwa-produktu) otrzymuję 404. Kiedy zamiast tego odwiedzam adres URL z taksonomią kategorii (strona/taksonomia/nazwa-produktu) Jestem przekierowywany do witryny /kategoria/nazwa-produktu, która również kończy się na 404.
Męczę się z tym od kilku dni, jakieś pomysły?
EDYTOWAĆ:
Niestety musiałem przełączyć permalinki z powrotem na domyślne (%postname%) – chcę, aby domyślne posty WP miały taką strukturę adresu URL. Zmieniłem również domyślną kategorię (która jest powiązana z domyślnymi postami) na niestandardową taksonomię o nazwie „my-category” i zarejestrowałem ją dla mojego niestandardowego typu postu. Więc teraz są 2 taksonomie (takie same jak pierwsza wstawiona). Strony archiwum dla nich dają 404, a strona produktu nadal daje 404. Jak ustawić strukturę przepisywania?
Doprecyzuję co chcę osiągnąć:
- site.com/%taxonomy1%/ – archiwum niestandardowego postu z tą taksonomią
- site.com/%taxonomy2%/ – archiwum niestandardowego postu z tą taksonomią
- site.com/%taxonomy1%/custom-post-name/ – strona z niestandardowym postem (link tylko z pierwszą taksonomią)