Wiem, że ludzie już o to pytali i posunęli się nawet do dodania niestandardowego typu postu i przepisania na link bezpośredni.
Problem polega na tym, że mam 340 istniejących kategorii, z których chciałbym nadal korzystać. Kiedyś mogłem zobaczyć / category / subcategory / postname
Teraz mam ślimak customposttype / postname. Wybranie kategorii nie jest już wyświetlane w permalink ... Nie zmieniłem ustawienia permalink w admin na nic innego.
Czy czegoś brakuje lub muszę dodać do tego kodu?
function jcj_club_post_types() {
register_post_type( 'jcj_club', array(
'labels' => array(
'name' => __( 'Jazz Clubs' ),
'singular_name' => __( 'Jazz Club' ),
'add_new' => __( 'Add New' ),
'add_new_item' => __( 'Add New Jazz Club' ),
'edit' => __( 'Edit' ),
'edit_item' => __( 'Edit Jazz Clubs' ),
'new_item' => __( 'New Jazz Club' ),
'view' => __( 'View Jazz Club' ),
'view_item' => __( 'View Jazz Club' ),
'search_items' => __( 'Search Jazz Clubs' ),
'not_found' => __( 'No jazz clubs found' ),
'not_found_in_trash' => __( 'No jazz clubs found in Trash' ),
'parent' => __( 'Parent Jazz Club' ),
),
'public' => true,
'show_ui' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'menu_position' => 5,
'query_var' => true,
'supports' => array(
'title',
'editor',
'comments',
'revisions',
'trackbacks',
'author',
'excerpt',
'thumbnail',
'custom-fields',
),
'rewrite' => array( 'slug' => 'jazz-clubs-in', 'with_front' => true ),
'taxonomies' => array( 'category','post_tag'),
'can_export' => true,
)
);
custom-post-types
categories
permalinks
haszysz
źródło
źródło
Odpowiedzi:
W przypadku dodawania niestandardowych reguł przepisywania typu postów należy uwzględnić 2 punkty ataku:
Przepisz reguły
Dzieje się tak, gdy reguły przepisywania są generowane
wp-includes/rewrite.php
wWP_Rewrite::rewrite_rules()
. WordPress pozwala filtrować reguły przepisywania dla określonych elementów, takich jak posty, strony i różne typy archiwów. Gdzie można zobaczyć część powinna być nazwa typu custom post. Alternatywnie możesz użyć filtru, o ile nie zniszczysz również standardowych reguł postów.posttype_rewrite_rules
posttype
post_rewrite_rules
Następnie potrzebujemy funkcji, aby faktycznie wygenerować reguły przepisywania:
Najważniejszą rzeczą, na którą należy zwrócić uwagę, jeśli zdecydujesz się na zabawę, jest boolean „Katalogi spacerowe”. Generuje reguły przepisywania dla każdego segmentu permastructwa i może powodować niedopasowania reguł przepisywania. Gdy żądany jest adres URL WordPress, tablica reguł przepisywania jest sprawdzana od góry do dołu. Jak tylko zostanie znalezione dopasowanie, załaduje to, co napotkało, więc na przykład, jeśli twój permastruct ma zachłanne dopasowanie, np.
/%category%/%postname%/
katalogi for i walk są włączone, wyświetli reguły przepisywania dla obu/%category%/%postname%/
AND,/%category%/
które pasują do wszystkiego. Jeśli zdarzy się to zbyt wcześnie, to jesteś pieprzony.Permalinks
Jest to funkcja, która analizuje łącza bezpośrednie typu post i konwertuje permastruct (np. „/% Year% /% monthnum% /% postname% /”) na rzeczywisty adres URL.
Następna część jest prostym przykładem tego, co byłoby idealną wersją
get_permalink()
funkcji znalezionej wwp-includes/link-template.php
. Generowane są niestandardowe bezpośrednie łącza pocztowe, dziękiget_post_permalink()
którym jest znacznie rozwodniona wersjaget_permalink()
.get_post_permalink()
jest filtrowane według,post_type_link
dlatego używamy go do tworzenia niestandardowej struktury permastruktury.Jak wspomniano, jest to bardzo uproszczony przypadek generowania niestandardowego zestawu reguł przepisywania i łączy bezpośrednich i nie jest on szczególnie elastyczny, ale powinien wystarczyć, aby zacząć.
Oszukiwanie
Napisałem wtyczkę, która pozwala zdefiniować permastructy dla dowolnych niestandardowych typów postów, ale podobnie jak możesz użyć
%category%
w strukturze permalink dla postów, moja wtyczka obsługuje%custom_taxonomy_name%
dowolne niestandardowe taksonomie, które masz również gdziecustom_taxonomy_name
jest nazwa twojej taksonomii np.%club%
.Będzie działać tak, jak można się spodziewać z hierarchicznymi / niehierarchicznymi taksonomiami.
http://wordpress.org/extend/plugins/wp-permastructure/
źródło
$permalink = home_url(...
zostaje zastąpiony$permalink = user_trailingslashit(...
i nigdy nie jest używany. A może coś mi brakuje?$post_link
nie jest nawet zdefiniowany. Czy tak miało być$permalink = user_trailingslashit( $permalink, 'single' );
?$permalink
nie$post_link
. Pozdrawiam :)Mam rozwiązanie!
Aby mieć hierarchiczne łącza bezpośrednie dla niestandardowego typu postu, zainstaluj wtyczkę Niestandardowe łącza bezpośrednie typu ( https://wordpress.org/plugins/custom-post-type-permalinks/ ).
Zaktualizuj zarejestrowany typ postu. Mam nazwę typu posta jako centrum pomocy
I tutaj jest zarejestrowana taksonomia
Ta linia sprawia, że twój link bezpośredni działa
możesz usunąć
%post_id%
i zachować/%help_centre_category%/%postname%/"
Nie zapomnij opróżnić permalinków z deski rozdzielczej.
źródło
Znalazłem ROZWIĄZANIE !!!
(Po niekończących się badaniach .. Mogę mieć permalinki CUSTOM POST TYPE takie jak:
example.com/category/sub_category/my-post-name
tutaj kod (w functions.php lub wtyczce):
źródło
Masz kilka błędów w kodzie. Wyczyściłem twój istniejący kod:
Zastąp swój kod powyższym kodem i sprawdź, czy działa. Odpowiedz, jeśli masz dodatkowe pytania, a ja postaram się pomóc.
EDYTOWAĆ:
Zauważyłem, że pominąłem
'has_archive' => true
.źródło