WordPress jest dostarczany z pięcioma domyślnymi typami postów: postpageattachmentrevision, oraz menu.

Podczas opracowywania wtyczki może być konieczne utworzenie własnego określonego typu zawartości: na przykład produktów dla witryny e-commerce, zadań dla witryny e-learningowej lub filmów dla witryny z recenzjami.

Używając Custom Post Types, możesz zarejestrować własny typ postu. Po zarejestrowaniu niestandardowego typu postu otrzymuje on nowy ekran administracyjny najwyższego poziomu, który może być używany do zarządzania i tworzenia postów tego typu.

Aby zarejestrować nowy typ postu, używasz funkcji register_post_type().

Alert:
Zalecamy umieszczenie niestandardowych typów postów we wtyczce, a nie w motywie. Zapewnia to, że zawartość użytkownika pozostaje przenośna, nawet jeśli motyw zostanie zmieniony.

Następujący minimalny przykład rejestruje nowy typ postu, Produkty, który jest identyfikowany w bazie danych jako wporg_product.

function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __('Products', 'textdomain'),'singular_name' => __('Product', 'textdomain'),),'public' => true,'has_archive' => true,));}add_action('init', 'wporg_custom_post_type');

Expand full source codeCollapse full source code

Proszę odwiedzić stronę referencyjną dla register_post_type() w celu zapoznania się z opisem argumentów.

Ostrzeżenie:
Musisz wywołać register_post_type() przed hakiem admin_init i po haku after_setup_theme. Dobrym hakiem do użycia jest init action hook.

Naming Best Practices #Naming Best Practices

Ważne jest, abyś poprzedzał swoje funkcje typu postu i identyfikatory krótkim prefiksem, który odpowiada twojej wtyczce, motywowi lub stronie internetowej.

Ostrzeżenie:
Upewnij się, że twój niestandardowy identyfikator typu postu nie przekracza 20 znaków, ponieważ kolumna post_type w bazie danych jest obecnie polem VARCHAR o tej długości.

Ostrzeżenie:
Aby zapewnić kompatybilność w przód, nie używaj wp_ jako swojego identyfikatora – jest on używany przez rdzeń WordPress.

Ostrzeżenie:
Jeśli twój identyfikator jest zbyt ogólny (na przykład: „product„), może to powodować konflikt z innymi wtyczkami lub motywami, które zdecydowały się użyć tego samego identyfikatora.

Uwaga:
Rozwiązanie zduplikowanych identyfikatorów typów postów nie jest możliwe bez wyłączenia jednego z konfliktowych typów postów.

Top

URLs #URLs

Niestandardowy typ postu otrzymuje swój własny slug w ramach struktury URL witryny.

Post typu wporg_product będzie domyślnie używał następującej struktury URL: http://example.com/wporg_product/%product_name%.

wporg_product jest slugiem twojego niestandardowego typu postu, a %product_name% jest slugiem twojego konkretnego produktu.

Ostateczny permalink byłby: http://example.com/wporg_product/wporg-is-awesome.

Możesz zobaczyć permalink na ekranie edycji dla twojego niestandardowego typu postu, tak jak w przypadku domyślnych typów postów.

Niestandardowy slug dla niestandardowego typu postu #A Custom Slug for a Custom Post Type

Aby ustawić niestandardowy slug dla sluga twojego niestandardowego typu postu, wszystko, co musisz zrobić, to dodać klucz musisz dodać klucz => para wartości do rewrite klucz w tablicy register_post_type() argumenty.

Przykład:

function wporg_custom_post_type() {register_post_type('wporg_product',array('labels' => array('name' => __( 'Products', 'textdomain' ),'singular_name' => __( 'Product', 'textdomain' ),),'public' => true,'has_archive' => true,'rewrite' => array( 'slug' => 'products' ), // my custom slug));}add_action('init', 'wporg_custom_post_type');

Expand full source codeCollapse full source code

W wyniku powyższego powstanie następująca struktura adresu URL: http://example.com/products/%product_name%

Ostrzeżenie:
Używanie ogólnego sluga, takiego jak products, może potencjalnie powodować konflikt z innymi wtyczkami lub motywami, więc spróbuj użyć takiego, który jest bardziej specyficzny dla Twojej zawartości.

Uwaga:
W przeciwieństwie do niestandardowych identyfikatorów typów postów, problem zduplikowanego sluga można łatwo rozwiązać, zmieniając slug dla jednego z konfliktowych typów postów.

Jeśli autor wtyczki zawarł wywołanie apply_filters() na argumentach, można to zrobić programowo, nadpisując argumenty przekazane za pomocą funkcji register_post_type().

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *