To wydaje się głupie pytanie. Ale nie mogę tego rozgryźć :(.
Muszę wyświetlić w domu przycisk, który prowadzi do niestandardowego adresu URL archiwum post_type (archive- {post_type} .php). W jaki sposób mogę to zrobić?
custom-post-types
templates
ariefbayu
źródło
źródło
yoursite.com/type-slug
chyba że wyraźnie ustawisz go na coś innego, np.yoursite.com/some-other-url
..Odpowiedzi:
Cześć @Silent:
Okazuje się, że w WordPress 3.1 jest funkcja, która robi dokładnie to, co chcesz i ma nazwę
get_post_type_archive_link()
; oto jak byś to nazwał (zakładając niestandardowy typ wpisu o nazwie'product'
):Poniżej moja poprzednia odpowiedź, zanim odkryłem, że WordPress rzeczywiście ma wbudowaną funkcję dla tego przypadku użycia.
Wcześniejsza odpowiedź:
Chyba że przeoczyłem coś w podstawowym kodzie źródłowym WordPressa 3.1. Myślę, że szukasz funkcji,
get_archive_link()
którą możesz wywołać w ten sposób (zakładając niestandardowy typ wpisu o nazwie'product'
):A oto kod źródłowy, który możesz umieścić w
function.php
pliku motywu lub w.php
pliku wtyczki, którą możesz pisać:Właściwie pracowałem nad tą dokładną logiką przez weekend, chociaż nie jestem jeszcze w 100% pewien, że kolejność logiki jest ogólnie poprawna we wszystkich przypadkach użycia, które może zobaczyć WordPress, chociaż prawdopodobnie będzie działać dla dowolnej konkretnej strony.
Jest to również świetna rzecz, którą można zasugerować, aby dodać ją do WordPressa przez trac, co myślę, że zrobię później tego wieczoru.
źródło
po zarejestrowaniu typu postu możesz przekazać ciąg jako ślimak z parametrem „has_archive” i upewnij się, że ustawiłeś przepisanie na true lub tablicę, ale nie fałsz, a wtedy adres URL archiwum CPT to http://www.YOURDOMAIN.com Na przykład / has_archive_slug
jeśli ustawisz na przykład swój typ_postu:
Twój pojedynczy adres URL to: http://www.YOURDOMAIN.com/product/postName, a adres URL archiwum to: http://www.YOURDOMAIN.com/products/
źródło
has_archive
to boolean, ale teraz wiem, że można mu podać ciąg, więc mój szczególny typ niestandardowego posturecipe
może mieć liczbę mnogą/recipes/
'rewrite'
akceptuje tylko wartość logiczną lub tablicę. Zamiast'rewrite' => 'product',
wymienionych, powinno być'rewrite' => array( 'slug' => 'product' ),
.