To jest samouczek, jak dodać niestandardowe ustawienie do strony administratora WordPressa „Ustawienia > Permalinki", aby zdefiniować slug dla niestandardowego typu postu. Jeśli tworzysz motyw lub wtyczkę dla innych, która ma wbudowany niestandardowy typ postu, dodanie tego ustawienia zostanie docenione przez użytkownika za umożliwienie mu decydowania o strukturze adresu URL niestandardowego typu posta.
Nie będę szczegółowo omawiał, jak dodać niestandardowy typ posta; jeśli nie masz pewności, polecam przyjrzeć się , jak dodać niestandardowy typ posta.
Załóżmy, że masz kod do zarejestrowania niestandardowego typu postu w następujący sposób:
Interesuje nas rewrite
argument. W tym miejscu definiujemy, jaki slug otrzyma dany post przed wszystkimi jego postami. Twój kod do rejestracji niestandardowego typu postu może być nieco inny, np. bez „ with_front
“, ale to, co nas tutaj interesuje, to „ slug
“:
Za pomocą tego kodu praktycznie na stałe ustalasz, jaki będzie ślimak permalink posta. Typ postu dla referencji może być używany dla wielu typów treści i użytkowników motywów; np. projekt, portfolio, referencje klientów, referencje firm itp. Aby uczynić twój motyw elastycznym, możesz pozwolić użytkownikowi motywu na samodzielne decydowanie o rodzaju postu.
Zobaczmy więc, jak to zrobić!
Dodawanie i zapisywanie pola
Korzystanie z interfejsu API ustawień WordPressa upraszcza to nieco dla nas. Wszystko, czego potrzebujemy, to dodać pole ustawień i powiedzieć WordPressowi, na której stronie administratora ma być wyświetlany – w naszym przypadku na stronie ustawień permalinków. Pamiętaj, że musimy napisać funkcję, która faktycznie zapisuje również wartość, co zrobimy na końcu.
Podłączamy naszą funkcję do admin_init
haka i rejestrujemy nasze ustawienie. Kiedy rejestrujemy ustawienie, określamy, jaką funkcję ma ona uruchomić w celu wyprowadzenia ustawienia:
add_action('admin_init', function() {
add_settings_field('mytheme_reference_slug', __('References base', 'txtdomain'), 'mytest_reference_slug_output', 'permalink', 'optional');
});
Ustawienie czwartego argumentu [add_settings_field](https://developer.wordpress.org/reference/functions/add_settings_field/)()
na 'permalink'
mówi WordPressowi, aby dodał to ustawienie do strony Ustawienia permalinków. Argument numer trzy to funkcja, którą WordPress powinien uruchomić podczas wyprowadzania ustawienia – funkcja, którą definiujemy następnie (poza funkcją podpiętą):
W tej funkcji po prostu wypisujemy podstawowy tekst formularza <input>
. Dla jego value
atrybutu pobieramy wartość ustawienia za pomocą [get_option](https://developer.wordpress.org/reference/functions/get_option/)()
. Atrybut jest placeholder
opcjonalny, ale dobrą praktyką jest umieszczenie domyślnej bazy informacji o ślimaku, aby użytkownik motywu wiedział, czy chce zmienić jego wartość, czy nie.
Jeśli zapiszesz kod i przejdziesz teraz na stronę Permalinków WordPress, powinieneś zobaczyć swoje pole na samym końcu:
W tej chwili ustawienie nie zapisuje swojej wartości, to kolejny krok.
Musimy dodać kolejną podłączoną funkcję admin_init
, która sprawdza, czy nasze ustawienie zostało przesłane w formie struktury permalink. A jeśli tak, należy go zapisać za pomocą [update_option](https://developer.wordpress.org/reference/functions/update_option/)()
.
add_action('admin_init', function() {
if (isset($_POST['permalink_structure'])) {
update_option('mytheme_reference_slug', trim($_POST['mytheme_reference_slug']));
}
});
Podczas zapisywania ustawień Permalinków formularz jest przesyłany, dzięki czemu jesteśmy w stanie uzyskać wartości poprzez $_POST
zmienną globalną PHP. Przesłane wartości z formularza są przechowywane jako tablica z atrybutami nazwy danych wejściowych jako kluczami. W naszym przypadku ustawiamy atrybut nazwy ‘ mytheme_reference_slug
‘ na naszych danych wejściowych, dzięki czemu możemy uzyskać dostęp do przesłanej wartości za pomocą $_POST['mytheme_reference_slug']
.
Teraz ustawienie powinno działać w pełni na stronie ustawień Permalink. Ostatnią częścią jest przypisanie wartości tego ustawienia do naszego niestandardowego typu posta.
Sprawiając, że nasz niestandardowy typ posta korzysta z naszych ustawień
Aby nasz niestandardowy typ postu używał niestandardowej wartości naszego ustawienia, wracamy do register_post_type()
wywołania funkcji i modyfikujemy rewrite
argument w taki sposób:
Wszystko, co tutaj robimy, to pobieranie wartości naszej nowej opcji. Jeśli jest pusta 'reference'
, zostanie użyta domyślna ().
I to wszystko! Teraz Twój niestandardowy typ postu będzie używał dowolnej bazy informacji o slugach ustawionej na stronie Ustawienia Permalinków. W ten sam sposób możesz dodać więcej ustawień, na przykład dla niestandardowych taksonomii.
Pełny kod
Teraz wszyscy razem.