Zaufane samouczki WordPress, kiedy ich najbardziej potrzebujesz.
Przewodnik dla początkujących po WordPressie
WPB Cup
25 milionów+
Witryny korzystające z naszych wtyczek
16+
Lata doświadczenia z WordPressem
3000+
Samouczki WordPress od ekspertów

Jak używać niestandardowych typów postów w WordPress 3.0

Od wersji 2.9 WordPress wprowadził możliwość korzystania z niestandardowych typów postów. Teraz, wraz z wersją 3.0, rzeczy posunęły się nieco dalej dzięki opcji tworzenia paneli dla niestandardowych typów postów. W tym samouczku pokażemy, jak zaimplementować niestandardowe typy postów na swojej stronie w witrynie WordPress.

Tworzenie niestandardowych typów postów – Używanie wtyczek

Od wersji 3.0 WordPress nie posiada wbudowanego interfejsu użytkownika (UI) do tworzenia niestandardowych typów postów. Istnieją tylko dwie opcje, których możemy użyć do tworzenia niestandardowych typów postów: wtyczki lub zakodowanie ich bezpośrednio w pliku functions.php twojego motywu. Najpierw przyjrzyjmy się, jak możemy użyć wtyczek do tworzenia niestandardowych typów postów.

Custom Post Type UI

Niestandardowy typ posta UI

Custom Post Type UI to wtyczka opracowana przez Brada Williamsa z WebDevStudios, która pozwala łatwo tworzyć niestandardowe typy postów i taksonomie. Jedną z najfajniejszych funkcji tej wtyczki jest to, że generuje kod do tworzenia niestandardowych typów postów, który można następnie wkleić do pliku functions.php motywu. Jedną z osobliwości tej wtyczki jest niemożność udostępniania taksonomii między wszystkimi twoimi typami postów.

Generuj kod dla niestandardowych typów postów

Z panelu interfejsu użytkownika niestandardowych typów postów kliknij „Dodaj nowy”.

Przycisk Dodaj nowy dla interfejsu użytkownika niestandardowych typów postów

Następnie otrzymasz kilka opcji do wypełnienia. „Nazwa typu posta” będzie używana przez WordPress do pobierania wszystkich postów z danego typu posta. „Etykieta” będzie wyświetlana na pasku bocznym Twojego pulpitu, podobnie jak zwykłe menu „Post”. Jeśli rozwiniesz „Pokaż opcje zaawansowane”, zobaczysz kilka dodatkowych opcji, które możesz skonfigurować. Większość z nich jest samoexplanatoryczna, takich jak „Publiczny” i „Pokaż UI”. Pierwsza, ustawiona na true, pozwala na wyświetlanie menu niestandardowego typu posta na pasku bocznym, a druga (pokaż UI), ustawiona na true, generuje panel menu.

„Rewrite” to to, co pozwala niestandardowemu typowi posta używać przyjaznych dla SEO adresów URL WordPress (Permalinks). „Custom Rewrite Slug” można ustawić na dowolną wartość. WordPress użyje tego sluga do generowania permalinków. Więc jeśli mamy example.com z niestandardowym slugiem „movies”, permalink twojego niestandardowego typu posta będzie wyglądał tak: example.com/movies

Funkcja WordPress „Query Var” pozwala na zapytanie postów z niestandardowego typu post. Więc jeśli użylibyśmy podanego wcześniej przykładu, aby uzyskać dostęp do posta o tytule, Mój Pierwszy Post Filmowy, który jest napisany pod typem postu Filmy, możemy wpisać example.com/?movies=my-first-movie-post. Zmienna zapytania wygląda więc tak: ?nazwa_typu_postu

Wreszcie możesz wybrać różne funkcje obsługiwane przez niestandardowy typ post, takie jak miniatury/obraz wyróżniony i fragmenty.

Opcje niestandardowego typu posta UI

Tworzenie niestandardowych typów postów – użycie pliku Functions.php

Hard Code Custom Post Types

Jeśli wolisz używać niestandardowych typów postów bez wtyczki, dodaj następujący kod do pliku functions.php swojego motywu:

// Creates Movies post type
register_post_type('movies', array(
'label' => 'Movies',
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => false,
'rewrite' => array('slug' => 'movies'),
'query_var' => true,
'supports' => array(
'title',
'editor',
'excerpt',
'trackbacks',
'custom-fields',
'comments',
'revisions',
'thumbnail',
'author',
'page-attributes',)
) );

Rozłóżmy kod.

register_post_type( $post_type, $args ): Ta funkcja przyjmuje dwa parametry: $post_type, czyli nazwę typu posta, i $args, czyli tablicę argumentów.

label: Nazwa w liczbie mnogiej podana dla typu posta, która jest wyświetlana w bocznym panelu administracyjnym.

public: true/false. Pozwala na wypełnienie interfejsu administratora postami tego typu.

show_ui: true/false. Pokazuje lub ukrywa domyślny interfejs użytkownika do zarządzania tym typem posta.

capability_type: Domyślnie: post Typ posta używany do sprawdzania uprawnień do odczytu, edycji i usuwania.

hierarchical: Czy typ posta jest hierarchiczny.

rewrite: true/false. Domyślnie: true Jeśli podano argument slug, nazwa slug jest dodawana na początku postów.

query_var: true/false Ustawia nazwę typu posta jako zmienną zapytania.

obsługuje: Domyślnie: tytuł i autor Ustawia różne funkcje obsługi, na które pozwala typ posta.

Odwiedź WordPress Codex po więcej informacji o register_post_type().

Wyświetlanie postów niestandardowych typów postów

Aby wyświetlić posty z niestandardowego typu posta, dodaj poniższe kody w pętli. Zastąp „name” nazwą swojego typu posta. Uwaga: Nie musisz dodawać niestandardowych typów postów w pliku index.php. Możesz utworzyć niestandardową stronę WordPress i uruchomić poniższe zapytanie w pętli.

$query = new WP_Query( 'post_type=name' );

Aby wyświetlić posty z więcej niż jednego typu postów, zmień powyższy kod na następujący. Zmień „movies” na nazwę swojego niestandardowego typu postów.

$query = new WP_Query( array(
	'post_type' => array( 'post', 'movies' )
) );

Powyższy kod wyświetli wszystkie posty z regularnego typu post (post) oraz z niestandardowego typu post, filmy.

To wszystko. Mamy nadzieję, że ten samouczek był pomocny i nie zapomnij zadawać pytań w komentarzach.

Ujawnienie: Nasze treści są wspierane przez czytelników. Oznacza to, że jeśli klikniesz w niektóre z naszych linków, możemy otrzymać prowizję. Zobacz jak finansowany jest WPBeginner, dlaczego to ważne i jak możesz nas wesprzeć. Oto nasz proces redakcyjny.

Ostateczny zestaw narzędzi WordPress

Uzyskaj BEZPŁATNY dostęp do naszego zestawu narzędzi – kolekcji produktów i zasobów związanych z WordPress, które powinien mieć każdy profesjonalista!

Interakcje czytelników

58 CommentsLeave a Reply

  1. Utworzyłem dwa niestandardowe typy postów, ale tylko pierwszy pojawia się na mojej stronie. Dodałem to
    $query = new WP_Query( array( ‘post_type’ => array( ‘post’, ‘featured’, ‘latest’ )
    ) );

    w moim pliku pętli, ale nic. jak mogę to rozwiązać?

  2. Po pierwsze, świetny artykuł! Pracuję nad implementacją niestandardowych typów postów za pomocą kodu. Warto zauważyć, że obecna dokumentacja WordPress (http://codex.wordpress.org/Function_Reference/query_posts) określa, że funkcja query_posts generalnie nie powinna być używana i że hak pre_get_posts służy do modyfikowania zapytań.

    „Zdecydowanie zaleca się użycie filtru pre_get_posts zamiast tego i zmodyfikowanie głównego zapytania poprzez sprawdzenie is_main_query”

    Ponownie, świetny artykuł, dzięki za udostępnienie.

    Pozdrawiam.

  3. WOW… dla nowicjusza, który używa WP do prowadzenia swojej strony internetowej, to wcale nie są podstawy! Prawdopodobnie będę musiał skontaktować się z jakimś programistą WP, aby skonfigurować moją niestandardową stronę, którą chcę.

  4. query_posts( ‘post_type=movies’);
    ?>

    Nie mogę sprawić, żeby to działało w moim szablonie strony child theme z 2011 roku, gdzie bym to umieścił, aby pobrać stronę z filmami. Właściwie to właśnie fragmenty najbardziej mnie interesują. Dzięki Mark

  5. Używając tej wtyczki i dodając powyższy kod do loop.php, stracisz kontrolę nad kategoriami... mój niestandardowy typ posta jest dodawany do wszystkich kategorii... jakaś pomoc?

    • @muntzdesigns Dlatego masz wiele pętli... główną pętlę bloga, archive.php, category.php itp... Na niestandardowo zaprojektowanej stronie będziesz musiał to wykorzystać, aby działało to odpowiednio.

      • @wpbeginner@muntzdesigns Więc po prostu dodam powyższy kod do wszystkich plików? (loop.php, archive.php i category.php). Dzięki.

        • @muntzdesigns Nie. Kod dodajesz tylko na stronach głównych. Problem, który miałeś, polegał na tym, że niestandardowe typy postów były dodawane do wszystkich kategorii… Musisz dodać powyższy kod tylko do głównej pętli. Następnie utwórz nową pętlę dla archiwum kategorii, archiwum taksonomii, archiwum autora…

  6. Co dokładnie oznacza identyfikator typu treści w wtyczce CMS Press? Szukam sposobu na dodanie przedrostka z kategorią do niestandardowego typu posta (example.com/category/post_type/postname), ale podczas używania %category%/%identifier%/%postname% w identyfikatorze typu treści automatycznie przekształca się to w ten sposób: %categoryidentifierpostname

  7. To jest tak świetny samouczek do tworzenia niestandardowych postów w WordPressie. Kroki są podane szczegółowo, można je łatwo śledzić. To wielka, wielka pomoc!

  8. Wow, miałem cały ten CMS Press działający, ale nie mogłem zrozumieć, jak sprawić, by pojawił się w postach. Chyba jest tak stary, że wszyscy zakładają, że powinno to być już wiadome. Idealna odpowiedź na to, jak sprawić, by mój niestandardowy typ posta pojawił się w pętli.

    Jerry Craig
    Podczaszy

  9. Dzięki, to mi bardzo pomogło w umieszczeniu mojego niestandardowego typu posta na stronie głównej. Zdecydowanie dodane do zakładek, dzięki.

  10. Wypróbowałem wtyczkę, bardzo imponujące. Jednak próbuję uzyskać atrybut strony, który pojawi się z atrybutów 'Strony' mojego motywu, tj. możliwość użycia opcji strony pełnowymiarowej. Czy mam przypuszczać, że Twoja wtyczka pobiera atrybuty tylko z układów typu Post, a nie z układów typu Page? Wszystko, czego chcę, to możliwość ustawienia posta na pełny, z góry określony szablon.

    Świetna robota – będę tego dużo używać.

    Na zdrowie
    Ed

  11. Próbowałem sposobu z wtyczką, ale nie udało mi się wyświetlić posta. Może dlatego, że nie mogłem znaleźć pliku loop.php.

    Tak czy inaczej, dziękuję bardzo, jestem pewien, że wkrótce zadziała.

    Chciałbym powiedzieć, że jedną super niesamowitą rzeczą, którą można by zrobić z WordPress, jest możliwość tworzenia niestandardowych widoków treści, tak jak w Drupalu z modułem views.

    Wiem, że istnieje wtyczka o nazwie pods i pods cms, która ma to umożliwić. Być może mógłbyś poprosić dewelopera o pomoc w poście na wpbeginner, jeśli w ogóle tego nie rozumiesz, tak jak ja. Jestem pewien, że wielu ludzi by to pokochało. Prezentowanie widoków to w końcu to, co czyni CMS prawdziwie dynamicznym CMS-em.

    • loop.php może nie istnieć w twoim motywie. Pętla może być również znaleziony w twoim index.php, archive.php, category.php itp. Możesz również utworzyć niestandardową pętlę, jeśli chcesz.

      Admin

  12. Dobry samouczek, dziękuję za udostępnienie.

    Mam pytanie dotyczące tego.
    Stworzyłem niestandardowy typ posta za pomocą functions.php (kalendarz), który ma niestandardowe pole meta w interfejsie administratora. To pole meta wykorzystuje jQuery w jednym polu.(http://jqueryui.com/demos/datepicker/).
    Aby ten datepicker działał, muszę osadzić wymagane skrypty.
    add_action(‘admin_enqueue_scripts’,’enqueue_my_scripts’);
    działa, ale moje skrypty są ładowane w całym interfejsie administratora. (co zakłóca domyślne jQuery administracji WP)
    Potrzebuję więc haka dla mojego niestandardowego typu posta.
    this:
    add_action(‘register_post_type’,’enqueue_my_scripts’);
    doesn’t work because register_post_type isn’t a hook.
    Jaki jest więc hak dla niestandardowego typu posta?

    • Możesz spróbować dodać poniższe do definicji swojej funkcji przed zarejestrowaniem skryptu:

      if(is_admin()) return;

      Więc coś w stylu:

      function some-function(){
      // nie potrzebujemy tego na stronach administracyjnych, więc...
      if(is_admin()) return;
      // zarejestruj niestandardowy skrypt
      wp_enqueue_script( 'some-script' );
      }

  13. Jak sprawić, by każdy typ treści wyświetlał się w pętli? To znaczy, to prawie jak Tumblr. Jeśli opublikuję zdjęcie... muszę dostosować kod w pętli – to samo, jeśli opublikuję link.

  14. Nie mogę sprawić, by pętla działała, aby zapytać o posty mojego niestandardowego typu. Twój przykład wydaje się wystarczająco prosty, więc spróbowałem następującego: $var = query_posts( ‘post_type=sponsor’);

    Następnie rozpocząłem pętlę
    while ($var ->have_posts()) : $var ->the_post();
    Rób rzeczy
    endwhile;

    to zwraca błąd php:
    Fatal error: Call to a member function have_posts() on a non-object in single-sponsor.php on line 22

    linia 22 to linia z pętlą while.

    Pomysły? Co robię źle?

  15. Próbowałem utworzyć tag dla niestandardowego pola, a kiedy używam get_the_tags w pętli niestandardowego typu, nic nie drukuje.
    Jakieś sugestie?

  16. Jestem bardzo podekscytowany tą nową funkcją ^-^ Zrobiliście fajny film. Chociaż w waszym przykładzie, dlaczego używać niestandardowych typów postów, a nie po prostu wymyślić kategorię książki i filmy dla postów? W ten sposób oszczędzasz sobie kłopotów z niestandardowym typem posta.

  17. Dzięki za ten świetny artykuł! Jestem początkującym użytkownikiem WordPressa i może pomożesz mi z tym pytaniem:
    Czy można wyświetlić archiwa niestandardowego typu posta na pasku bocznym, tak jak można to zrobić za pomocą wtyczki „display archives by cat” firmy kwebble?

    • Tak, jest możliwe wyświetlanie niestandardowych typów postów jako archiwów. Po prostu utwórz niestandardową pętlę na pasku bocznym, aby wyświetlać posty lub kategorie z określonego typu posta.

      Admin

  18. Czy są jakieś łatwe do zrozumienia przewodniki, jak dodawać opcje do niestandardowych postów? Na przykład, jeśli film jest dramatem, komedią, horrorem… aby mieć te opcje jako pola wyboru W PANELU edycji niestandardowego posta? Nie mogę znaleźć przewodnika ani wtyczki do tego.

  19. Cześć, To był świetny artykuł. Miałem nadzieję, że możesz znać odpowiedź na moje pytanie.
    W ostatnich kilku wierszach masz:

    query_posts(array('post_type' => array('post', 'movies')));

    zwraca wszystkie posty i typy postów o nazwie filmy.

    Czy wiesz, jak zwrócić zarówno typy postów o nazwie „filmy”, jak i posty z kategorii „filmy”, ale wykluczyć wszystkie inne posty, które nie mają tej kategorii??

  20. Czy możesz cofnąć się o krok: Dlaczego w ogóle potrzebuję niestandardowych typów postów? Jaki jest przypadek użycia?

    • Niestandardowe typy postów są dobre dla użytkowników, którzy używają WordPressa do czegoś więcej niż tylko bloga, na przykład jako CMS. Powiedzmy, że chcesz mieć stronę z portfolio i blogiem. Oczywiście nie chcesz, aby twoje blogi wyglądały tak samo jak twoje portfolio. Wtedy niestandardowe typy postów okazują się przydatne. Jest to bardzo wszechstronna funkcja, która przenosi WordPress na wyższy poziom. Dla przeciętnego użytkownika bloga prawdopodobnie nie są potrzebne niestandardowe typy postów.

      Admin

      • Oke, ale nadal próbuję zrozumieć różnicę między tym a zwykłym kategoryzowaniem rzeczy. Stworzyłem wiele stron dla ludzi, gdzie osobne strony robią rzeczy takie jak wyświetlanie tylko kategorii „aktualności” i innej kategorii „projekty” lub czegokolwiek innego. Czym to jest lepsze?

  21. Nie mogę się powstrzymać od myśli, że byłoby to bardziej użyteczne, gdybyś pokazał coś niezwykłego z typami postów, zamiast używać starego przykładu „filmy i książki”.

    A może sideblog używający typów postów, albo coś bardziej praktycznego? To tylko powtarza to, co WP Codex ostatecznie będzie zawierał, jeśli już tam nie jest.

    • Przykro nam, że tak się czujesz, Chris. WP Codex nie będzie miał filmu pokazującego, jak to zrobić. Nie ma znaczenia, jak nazwiemy niestandardowe typy postów, chodzi o to, jak je dodać. Nie stworzymy nadzwyczajnej strony tylko po to, by napisać post o niestandardowych typach postów. Jeśli szukasz tej wiedzy, prawdopodobnie lepiej zrobisz to sam. Ten blog nadal musi spełniać potrzeby użytkowników początkujących, dlatego udostępniliśmy metodę z wtyczką.

      Admin

  22. Czy to zadziała na WordPress 2.9, czy tylko na 3.0?

    Próbowałem użyć wersji 3.0, ale wystąpił jakiś problem, przez który żadne z moich wtyczek nie chciało się aktywować, nawet te, które twierdziły, że się aktywowały. To było bardzo dziwne!

    -Kevin

  23. Właśnie obejrzałem film…

    Czy to prawda, że musimy edytować pliki php (= kodowanie na stałe), aby wszystko działało?

      • Allright, I see, thnx! ;)

        W takim razie chyba zacząłeś od trudnej ścieżki kodowania? W tamtym czasie widząc tylko te wszystkie rzeczy związane z kodowaniem, po prostu zrezygnowałem. Dlatego chyba nie widziałem sposobu z wtyczką…

  24. Bardzo fajny artykuł. Wtyczka Custom Post Type UI ma opcje bardzo podobne do surowego kodu PHP rejestrowania typów postów, co jest świetne dla programistów.

    Dziękuję za przedstawienie wielu przydatnych wtyczek do pracy z niestandardowymi typami postów.

  25. Cieszę się, że WordPress zintegrował niestandardowe typy postów bezpośrednio w frameworku wp. Jednak nie widzę, w jaki sposób jest to lepsze od używania już dostępnych wtyczek, takich jak Magic Fields czy Flutter. Dzięki tym wtyczkom uzyskujesz ten sam efekt, a także łatwe w konfiguracji niestandardowe pola z wieloma różnymi typami i elastycznością w sposobie wprowadzania i wyświetlania danych. Czy wp 3.0 obsługuje coś takiego od razu?

    • Możesz stworzyć interfejs użytkownika dla niestandardowych pól i praktycznie wszystkiego w backendzie za pomocą niestandardowych typów post. Masz rację, że te wtyczki bardzo ułatwiają pracę użytkownikom, ale jeśli któraś z tych wtyczek przestanie działać, nie będziesz miał wyboru.

      Admin

      • W porządku. Trochę bawiłem się betą, ale chyba nie tak dużo, jak powinienem. Byłoby ekscytujące, gdyby poszło bardziej w tym kierunku. Ponieważ zdobyłem doświadczenie w używaniu tych wtyczek, prawie nie tworzę teraz strony bez nich.

        Byłoby więc wspaniale, gdyby wszystkie te narzędzia były dostępne i zarządzane w ramach oryginalnej aplikacji. Widzę, że prowadzi to do lepszego zarządzania backendem i zachęca więcej osób do przyczyniania się do niego, zamiast mniejszej grupy wspierającej konkretną wtyczkę.

        • Myślę, że celowo zostawili część kodu niestandardowych typów postów jako kod. Aby przeciętny użytkownik musiał się z tym zmierzyć.

    • Nie mogę wyświetlić żadnych taksonomii w twentyeleven, ani nie mogę znaleźć samouczka, który pokazywałby mi wszystko od początku do końca, wszystkie wydają się skupiać na twentyten i pętli.

Zostaw odpowiedź

Dziękujemy za pozostawienie komentarza. Pamiętaj, że wszystkie komentarze są moderowane zgodnie z naszą polityką komentowania, a Twój adres e-mail NIE zostanie opublikowany. Prosimy NIE używać słów kluczowych w polu nazwy. Prowadźmy osobistą i znaczącą rozmowę.