Panel Klienta

Własne typy wpisów w WordPressie

Michał Okoń

Własne typy wpisów w WordPressie. Do czego mogą się nam przydać jest jasne, ale kiedy ich używać i jak je zainicjować? Dla niektórych jest to temat prosty, bo wystarczy zainstalować wtyczkę, która nam taki nowy typ wpisu doda. Jednak jest to kolejna wtyczka, której prawdopodobnie możliwości nie wykorzystamy nawet w 30%. Dlatego, pozwolę sobie nakreślić sytuację, która miała miejsce ostatnio, kiedy kończyłem projekt dla Natalii. Musiałem taki nowy typ wpisu dodać, ale zrobiłem to za pomocą kodu. Dlaczego za pomocą kod, wyjaśnię w dalszej części wpisu, natomiast teraz nakreślę całą sytuację.

Kończąc już wdrażanie strony internetowej, a właściwie platformy szkoleniowej funkcjonującej w UK dla mojego klienta, zaszła potrzeba stworzenia dodatkowego typu wpisu. Na stronie, która jest tak naprawdę platformą szkoleniową istnieje możliwość konsultacji z Polskimi ekspertami z różnych dziedzin. Na początku projekt zakładał kilku takich ekspertów. Podczas prowadzenia rozmów o współpracę z potencjalnymi chętnymi ekspertami był bardzo pozytywny odzew i chętnych cały czas przybywa. W związku z tym zaistniała potrzeba stworzenia nowego typu wpisu jakim jest Ekspert. Dzięki temu będzie można wyświetlić stronę ze wszystkimi ekspertami, a po wybraniu Eksperta wyświetlić o nim informacje. Między innymi o tym, jak może nam pomóc i jak możemy się z nim skontaktować.

Jak to zrobić, jak dodawać własne typy wpisów w WordPressie bez pomocy wtyczek?

Można to zrobić na dwa sposoby, które różni jedynie katalog, w jakim umieszczony jest plik php z funkcją:

  • pierwszy z nich to napisać wtyczkę, która doda nam odpowiedni typ wpisu i umieścić go w katalogu plugins
  • drugi sposób praktycznie identyczny, lecz plik funkcji umieszczony w innym miejscu niż folder wtyczek – mu-plugins.

Ja użyłem do tego drugiego rozwiązania. Ale od początku. Najpierw kod, który dodaje nam nowy typ wpisu:

//dodanie nowego typu posta - EKSPERT
function naticare_eksperci() {
    register_post_type('ekspert', array(
        'show_in_rest' 	=> true, // uwzględnienie nowego typu postu w interfejsie REST API oraz włączenie edytora blokowego dla tego typu postu
        'supports' 	=> array('title', 'editor', 'thumbnail', 'excerpt'), //tablica z wartościami jakie mają być widoczne w nowym typie wpisu
        'rewrite' 	=> array('slug' => 'eksperci'), // adres dla strony z archiwum
        'has_archive' 	=> true, //włączenie strony z archiwum dla nowego typu posta
        'public' 	=> true, // Dzięki temu post będzie widoczny dla redaktorów i innych przeglądających stronę
        'labels' 	=> array(
            'name' 		=> 'Eksperci', //nazwa nowego typu postu wyświetlana m.in. w PA
            'add_new_item' 	=> 'Dodaj Nowego Eksperta', //Tekst wyświetlany nad polem "Dodaj tytuł" przy wyłączonym show_in_rest
            'edit_item' 	=> 'Edytuj Eksperta', //Tekst wyświetlany nad polem "Dodaj tytuł" przy wyłączonym show_in_rest podczas edycji eksperta
            'all_items' 	=> 'Wszyscy Eksperci', //nazwa dla wyświetlenia wszystkich dodanych ekspertów w PA
            'singular_name' => 'Eksperta' // pojedyncza nazwa dla dodania nowego eksperta w pasku administracyjnym na gorze strony pod przyciskiem "+Dodaj"
        ),
        'menu_icon' 	=> 'dashicons-businessman', // ikona dla nowego typu postu
    ));
}
add_action('init', 'naticare_eksperci'); //zainicjowanie nowego typu wpisu

Plik nazywamy wg własnego uznania, ja nazwałem go nowe-typy-wpisow.php

Szczegółowy opis funkcji register_post_type() możesz znaleźć na stronie developer.wordpress.org

Ikony dla naszych własnych typów wpisów w WordPressie możemy wybrać na stronie: developer.wordpress.org

Gdzie zapisać plik z funkcją?

Plik z kodem wrzucamy do folderu wp-content/mu-plugins. Dlaczego właśnie tam, a nie np. do pliku functions.php w motywie potomnym? Zapisujemy go w tym katalogu, ponieważ jeśli wrzucimy kod do pliku functions.php zapisanego w katalogu motywu potomnego, wówczas po zmianie motywu stracimy nasz dodatkowy typ wpisu. Natomiast w przypadku, kiedy wrzucimy nasz plik z funkcją do folderu mu-plugins, skrypt uruchomi się automatycznie i zainicjuje nam nowy typ wpisu niezależnie od ustawionego motywu. Do pliku functions.php w motywie potomnym wrzucamy jedynie kod, który wpływa na wygląd samego motywu.

Co w przypadku, gdy nie masz katalogu mu-pligins?

Jeżeli nie widzisz takiego katalogu u siebie na serwerze, musisz go stworzyć. Folder o nazwie mu-plugins musi znajdować się w katalogu wp-content.

Można również wrzucić plik z funkcją do katalogu z wtyczkami i włączyć ją w panelu administracyjnym w zakładce Wtyczki. Mimo tej możliwości wybrałem sposób drugi, który automatycznie uruchamia skrypt. Sposób ten ogranicza możliwość włączenia lub wyłączenia tej funkcji przez klienta, który może przez przypadek wyłączyć wtyczkę nie mając pojęcia o konsekwencjach.

Dlaczego nie zdecydowałem się na użycie gotowej wtyczki do tworzenia nowych typów wpisów?

Jestem zwolennikiem ograniczania ilości wtyczek w WordPressie. Poza tym, jeśli mogę zrobić coś bez użycia wtyczek, za pomocą samego kodu, to właśnie tak robię. Staram się stosować własne rozwiązania i unikać często gotowych i napakowanych wieloma funkcjami wtyczek, których możliwości nie wykorzystam w 100%. Tak było w tym przypadku, potrzebowałem jedynie dodatkowego typu wpisu, bez wykorzystania taksonomii.

Jeszcze jedna, bardzo ważna rzecz

Po dodaniu własnego typu wpisu do WordPressa może zdarzyć się tak, że na stronie archiwum danego wpisu pojawi się błąd informujący o tym, że dana strona nie istnieje. Naprawienie tego jest banalnie łatwe. Wystarczy w panelu administracyjnym przejść do Ustawienia » Bezpośrednie odnośniki i kliknąć na dole strony Zapisz. To wszystko. Po odświeżeniu strony z archiwum wpisów wyświetlą nam się wszystkie dodane już posty.

5 1 vote
Jak bardzo przydał/spodobał Ci się ten artykuł?

Bądź na bieżąco z nowymi wpisami

Włącz subskrypcję i bądź na bieżąco z nowymi wpisami na blogu i promocjami w sklepie! ZERO spamu, same konkrety!

Subscribe
Powiadom o
guest
0 komentarzy
najnowszy
najstarszy oceniany
Inline Feedbacks
View all comments
1716