To doprowadza mnie do szaleństwa. Spędzam dni próbując to naprawić i nie mogę zrozumieć, dlaczego jest to tak trudne, ponieważ z pewnością jest to bardzo powszechna struktura permalink!
Przejrzałem setki odpowiedzi i postów i żadna z nich nie rozwiązała problemu.
Chcę po prostu tę strukturę:
mysite.com/custom-post-type/custom-taxonomy-term/post-name
Więc osiągam następujące:
mysite.com/literature - all literature posts
mysite.com/literature/fiction - all literature posts with 'fiction' term
mysite.com/literature/fiction/mybook - the post
Za każdym razem, gdy próbuję czegoś, otrzymuję błędy 404 lub pagnacja nie działa.
Nie rozumiem, dlaczego to takie trudne!
Każda pomoc naprawdę doceniona!
Dziękuję Ci
================================================== ==== ================== INFORMACJE DODATKOWE ==================
Obecnie rejestruję typ postu i systematykę w następujący sposób:
register_post_type('literature',$args);
'rewrite' => array('slug' => 'literature/books','with_front' => false),
register_taxonomy('literature_category',array('literature'), array(
'rewrite' => array( 'slug' => 'literature','with_front' => false ),
Jeśli zarejestruję oba jako „literaturę”, otrzymam 404 na stronie mysite.com/literature, ale wyświetli się mój bezpośredni link jako: mysite.com/literature/books/mybook
Po skorzystaniu z porady na to pytanie - Niestandardowe typy postów, taksonomie i łącza bezpośrednie
Dodałem to do moich funkcji:
function filter_post_type_link($link, $post) {
if ($post->post_type != 'literature')
return $link;
if ($cats = get_the_terms($post->ID, 'literature_category'))
$link = str_replace('%literature_category%', array_pop($cats)->slug, $link);
return $link;
}
add_filter('post_type_link', 'filter_post_type_link', 10, 2);
I zmieniłem typ postu na 'slug' => 'literature/%literature_category%'
I zmieniłem taksonomię na'slug' => 'literature'
Działa to świetnie, z tym że w przypadku mysite.com/literature
paginacji nie działa, więc pojawia się błąd 404 w następującym adresie URL:
mysite.com/literature/page/2/
źródło
Odpowiedzi:
Postępuj zgodnie ze wskazówkami dotyczącymi tego pytania, tak jak już to zrobiłeś, ale dodaj to do swojego kodu:
Na koniec przejdź do Ustawienia> Permalinki i wciśnij Zapisz. Jeśli nadal nie działa, zapisz ponownie linki bezpośrednie. Czasami wydaje mi się, że musisz ich uratować dwa razy, ale kto wie. W każdym razie, daj mi znać, jak sobie radzisz. Zauważ, że zastosowanie ma Standardowa odpowiedź nr 1: To działa dla mnie ... ;-)
Z krainy TMI ...
Dla porównania, powodem, dla którego strony nie działają domyślnie, jest fakt, że WordPress stosuje regułę przepisywania literatury /% literatura_kategorii% /% book% /% page%, co ma całkowity sens, jeśli się nad tym zastanowić. Więc twoje domyślne linki bezpośrednie mają te konkurencyjne reguły w następującej kolejności:
Wszystko, co tak naprawdę tutaj robimy, to zmiana ich kolejności przez rozbrojenie tego ostatniego (możemy to zachować, ale potem każde ponowne napisanie ma jeszcze jedno wyrażenie regularne do uruchomienia przy ładowaniu strony) i dodanie go na początku tablicy.
Ciekawostka: jeśli kiedykolwiek masz „książkę” zatytułowaną „stronę” i ma ona wiele stron, to zamówienie będzie powodować konflikty, a kolejne strony nie będą działać!
źródło