Czy jest jakiś sposób, aby dodać .html
rozszerzenie do niestandardowych typów postów bez wtyczki ?
W przypadku postów mogę używać /%postname.html
ustawień permalink
Do stron mogę użyć:
add_action('init', 'change_page_permalink', -1);
function change_page_permalink() {
global $wp_rewrite;
if ( strstr($wp_rewrite->get_page_permastruct(), '.html') != '.html' )
$wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';
}
Dla niestandardowych typów postów?
Czy jest jakiś kod podobny do powyższego, który pozwala mi zmienić lub dodać .html
adres URL niestandardowego typu postu?
custom-post-types
permalinks
url-rewriting
urls
użytkownik983248
źródło
źródło
function post-type_permalink
błąd. Jeśli nie otrzymasz tego błędu, oznacza to, że masz coś boleśnie nie tak z ustawieniami debugowania. Również proszę przerób swoje pytanie z poprawnymi zamiarami na liniach. Dzięki./$postname.html
dla postów, jak mogę użyć tego samego dla niestandardowych typów postów.-
nie działa w nazwach funkcji ...Odpowiedzi:
To wydaje się działać:
Utwórz reguły przepisywania, takie jak
post-type/post-name.html
. Możesz użyć tablic, aby utworzyć reguły tylko dla niektórych zestawów typów postów zamiast robić to dla wszystkich.Sformatuj nową strukturę łącza bezpośredniego dla tych typów postów.
A następnie przestań przekierowywać kanoniczne adresy URL, aby usunąć końcowy ukośnik. Może to wymagać nieco więcej pracy, ponieważ prawdopodobnie będziesz chciał zachować przekierowanie w większości przypadków.
Jak powiedzieli inni tutaj, po wykonaniu powyższych czynności musisz opróżnić reguły, a jest to możliwe, odwiedzając
options-permalink.php
stronę administratora wDashboard -> Settings -> Permalinks
.źródło
wpse_59024_
(ID pytania), aby uniknąć konfliktu kopii / makaronu;). . . I ma tę dodatkową zaletę, że wie, która odpowiedź odpowiada, że ten kod należy do naszej biblioteki fragmentów. . . . . +1 miejsce na!post_type_link
filtruMożesz dodać regułę przepisywania w tym celu, która zastępuje wbudowane łącza bezpośrednie, np. Dla niestandardowego typu postu „produkt” ...
(Nie zapomnij opróżnić swoich reguł poprzez ponowne zapisanie
flush_rules
linków bezpośrednich lub użycie powyższych wskazówek @toscho).Ostrzeżenia
the_permalink()
wykorzystywały to, więc może być konieczne dodanie filtra,post_link
aby złapać te linki. Możesz również dodać doredirect_canonical
filtra, aby przekierować domyślne łącza bezpośrednie, tak aby / product / foo i / product / foo / przekierowały do /product/foo.html.źródło
Jeśli wolisz, aby wtyczka WordPress poradziła sobie z twoją pracą, sprawdź Niestandardowe stałe typy wpisów w repozytorium wtyczek WordPress. Testowany na WordPress 3.4.1 i działa idealnie.
Po aktywacji wtyczki przejdź do Dashboard -> Ustawienia -> Permalinks. Możesz dodać konkretne przepisania dla każdego zarejestrowanego niestandardowego typu postu.
źródło
flush_rules()
powinien być wywoływany przy de / aktywacji tylko dlatego, że jest on bardzo wolny. Możesz sprawdzić,$GLOBALS['wp_rewrite']->rules
czy reguły są już znane.