Czy jest możliwe ponowne ustawienie / zmianę informacji o istniejącym niestandardowym typie wtyczki (bez zwykłej edycji wtyczki)?
Oznacza to, że jeśli Plugin X utworzy niestandardowy typ postu za pomocą slug / uncookedtoast /, czy można dodać filtr do functions.php (lub czegoś podobnego), który zmienia ślimak na / bread /?
custom-post-types
functions
slug
Edbury
źródło
źródło
Odpowiedzi:
Tak, jest to możliwe, ale jeśli wtyczka tworzy niestandardowy typ postu za pomocą
rewrite => array('slug' => 'post_type')
parametru, prawdopodobnie nie będziesz w stanie wymienić ślimaka.Za każdym razem, gdy tworzone są niestandardowe typy postów, do bazy danych zapisywane są reguły przepisywania adresów URL. W zależności od tego, która akcja wyzwala utworzenie niestandardowego typu postu (np. Akcja init ), WordPress opróżni reguły przepisywania i przywróci informacje o niestandardowym typie postu bez względu na to, jakie zmiany zamierzasz wprowadzić.
To powiedziawszy, możesz dostarczyć niestandardowe ślimaki dla niestandardowych typów postów. Poniższy przykład zakłada, że masz niestandardowy typ postu
movies
i próbujesz zmienić/movies/
ślimak na/films/
.Aby zakończyć, oto podstawowa funkcja używana do definiowania
movies
niestandardowego typu postu. Wtyczka, do której się odwołujesz, powinna robić coś takiego:Możesz zmodyfikować tabelę opcji, podając własne reguły niestandardowe w oparciu o istniejący typ postu.
Zasadniczo zrobimy to:
Oto jak możesz to zrobić:
Teraz będziesz mieć dwa sposoby na dostęp do swoich filmów:
/movies/Back-To-The-Future
/films/Back-To-The-Future
Zauważ, że nie polecam podpinania się
add_custom_rewrite_rule
doinit
akcji, ponieważ będzie ona zbyt często strzelać. To tylko przykład. Lepszym miejscem do zastosowania tej funkcji jest aktywacja motywu, aktywacja wtyczki, być może akcja save_post itp. W zależności od tego, co musisz zrobić, może być konieczne uruchomienie go tylko raz lub kilka razy.W tym momencie możesz rozważyć aktualizację permalinków dla niestandardowego typu postu, aby użyć „
/movies/
ślimaka ” . Na przykład, jeśli/films/
przejdziesz do , zobaczysz listę wszystkich swoich filmów, ale najechanie kursorem na tytuł ujawni, że/movies/
ślimak jest nadal używany.Aby pójść o krok dalej, możesz technicznie zainicjować przekierowanie 301, aby złapać wszystkie linki
/movies/
do przekierowania do ich/films/
odpowiednika, ale wszystko to zależy od tego, co próbujesz zrobić.źródło
$post
z tejadd_custom_rewrite_rule()
funkcji, ale generuje błędy w WP Admin, mówiąc: „Próbuję uzyskać właściwość nie-obiektu”. Jak mogę uzyskać $ post, aby uzyskać wartość meta?Ten kod działał dobrze dla mojego motywu podrzędnego. Musiał zmienić „program” ślimak na „miejsce”.
źródło
$args['has_archive'] = false
i to zadziałało.