Jak tworzyć i publikować własne typy artykułów w WordPress: pełny praktyczny przewodnik

3 minuty na przeczytanie.
2026-03-17
2026-06-04
2,408
Zarabiam prowizję, gdy robisz zakupy poprzez poniższe linki, bez żadnych dodatkowych kosztów dla Ciebie.

Co to jest typ artykułu dostosowany w WordPress?

WordPress standardowo oferuje dwa typy treści: “Artykuły” (Articles) i “Strony” (Pages), ale to często nie wystarcza do budowy złożonych stron internetowych. W takich przypadkach konieczne jest tworzenie własnych typów artykułów (ang. Custom Post Types). CPTTo jeden z kluczowych elementów WordPress, który umożliwia programistom tworzenie nowych typów treści z własną strukturą danych i interfejsem administracyjnym. Można to uznać za rodzaj “szablonu treści” służącego do zarządzania określonym typem informacji.

Na przykład, witryna recenzji filmów może używać standardowego typu “Artykuł” do publikacji wiadomości, a przy tym stworzyć własny typ artykułu nazwany “Film”, który będzie przeznaczony specjalnie do zarządzania informacjami o filmach. Każdy wpis o filmie może zawierać specjalne pola, takie jak reżyser, aktorzy, ocena itd. Podobnie witryna e-handlu może stworzyć typ “Produkt”, a szkolna witryna typy “Kurs” lub “Nauczyciel”. Dzięki temu można efektywnie organizować i edytować różne rodzaje treści. CPTRóżne typy treści są jasno oddzielone, co sprawia, że zarządzanie danymi jest bardziej efektywne. To również stanowi solidną podstawę dla dalszej personalizacji szablonów i rozszerzania funkcji.

Jak stworzyć własny typ artykułu?

W WordPressie istnieją dwa głównego sposoby na stworzenie własnych typów artykułów: rejestracja za pomocą kodu oraz używanie pluginów. Dla programistów znajomość metody rejestracji kodu jest niezbyt ważna, ponieważ daje największą elastyczność i kontrolę, a także ułatwia zarządzanie wersjami w tematach lub własnych pluginach.

Polecamy lekturę. Pełne opanowanie dostosowanych typów artykułów w WordPress: od ich tworzenia po zaawansowane zastosowania w praktyce

Rejestracja typów artykułów dostosowanych za pomocą kodu

Najstandardniejszy i najzalecany sposób to… functions.php Może być użyte w pliku lub w osobnym modułu funkcjonalnym. register_post_type Funkcja jest rejestrowana. Przy jej wywołaniu są przekazywane dwa parametry: identyfikator typu artykułu („slug”) oraz array zawierający wszystkie potrzebne parametry.

UltaHost – hostingu dla stron WordPress
Gwarancja zwrotu pieniędzy w ciągu 30 dni, nieograniczony przepustowość sieci i dostęp do bazy danych, bezpłatna ochrona przed atakami typu DDoS. Promocja: 50% przy zakupie na 3 lata.

Poniżej znajduje się przykład kodu, który służy do tworzenia własnego typu artykułu o nazwie “Film”:

function create_movie_post_type() {
    $labels = array(
        'name'               => '电影',
        'singular_name'      => '电影',
        'menu_name'          => '电影管理',
        'add_new_item'       => '添加新电影',
        'edit_item'          => '编辑电影',
        'view_item'          => '查看电影',
    );
    $args = array(
        'labels'             => $labels,
        'public'             => true,
        'publicly_queryable' => true,
        'show_ui'            => true,
        'show_in_menu'       => true,
        'query_var'          => true,
        'rewrite'            => array( 'slug' => 'movie' ),
        'capability_type'    => 'post',
        'has_archive'        => true,
        'hierarchical'       => false,
        'menu_position'      => 5,
        'menu_icon'          => 'dashicons-video-alt',
        'supports'           => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
    );
    register_post_type( 'movie', $args );
}
add_action( 'init', 'create_movie_post_type' );

Ten kod działa poprzez… add_action Hak wykonywa się podczas inicjalizacji WordPress. create_movie_post_type Funkcja. Wewnątrz tej funkcji zdefiniowano elementy wyświetlania (tzw. „tagi”). $labels i kluczowe parametry $argsKluczowe parametry to:public Umożliwia kontrolę nad tym, czy elementy mają być wyświetlone w tle (w obszarze nie widzialnym przez użytkownika) czy na ekranie (w obszarze widzialnym przez użytkownika).rewrite Aby zdefiniować zasady przekierowania adresów URL, linki do pojedynczych filmów będą przekierowywane w taki sposób, że… yoursite.com/movie/some-moviehas_archive Decydowanie o tym, czy utworzyć stronę archiwów (np.…) yoursite.com/movie/);supports Definicja arrayu określa funkcje, które są dostępne dla tego typu zawartości, np. nagłówki, edytory, zdjęcia przedstawiające produkt itd.

Użyj wtyczek do stworzenia własnego typu artykułu.

Dla osób nieznających się na programowaniu pluginy są doskonałym wyborem, aby szybko zacząć korzystać z nowych funkcji. Custom Post Type UI i Toolset Types to dwa bardzo popularne pluginy, które oferują intuicyjne interfejsy użytkownika, umożliwiające definiowanie wymaganych parametrów poprzez wypełnianie formularzy i wybieranie odpowiednich opcji. CPT Różne atrybuty, takie jak etykiety, poziom dostępności (publiczność), obsługiwanie funkcji itd.

Tworzenie elementów interfejsu w formie wtyczek (plug-inów) jest prostą i szybką metodą, ale często powoduje dodatkowe operacje z bazą danych, a konfiguracja tych wtyczek zależy od samej wtyczki. Podczas przenoszenia witryny na inny serwer lub dokonywania dużych aktualizacji mogą być konieczne dodatkowe kroki, aby zapewnić, że ustawienia dostosowanych typów artykułów zostaną zachowane. Dlatego w środowisku produkcyjnym lub w projektach wymagających długoterminowej obsługi metoda rejestracji kodu jest zwykle lepszym wyborem.

Polecamy lekturę. Przewodnik po tworzeniu tematów dla WordPress: budowanie wysokiej wydajności tematów dostosowanych od zera

Aby dodać pola dostosowane do określonych typów artykułów, należy wykonać następujące kroki:

Sam typ artykułu dostosowanego (custom article type) zapewnia tylko ogólną strukturę, by umożliwić przechowywanie unikalnych informacji (np. daty wydania filmu lub nazwiska reżysera). Aby to osiągnąć, konieczne są pola dostosowane (Custom Fields) lub bardziej rozwinięte elementy interfejsu typu Meta Boxes. WordPress posiada włączony panel do edycji pola dostosowanych, ale jego interfejs jest prosty i funkcje ograniczone, więc nie jest idealny dla redaktorów treści.

Użyj wtyczki do zaawansowanych, dostosowanych polów.

Dodatek Advanced Custom Fields (ACC) stanowi standard w branży dotyczący obsługi ustawiania własnych poli (custom fields). Dzięki niemu możesz definiować te pola w graficzny sposób dla różnych typów artykułów, wliczając twoje własne. CPTMożna tworzyć różne typy grup poli, takie jak tekst, zdjęcia, pola wyboru, a także pola przedstawiające zależności pomiędzy elementami danego systemu.

Na przykład, dla “filmu”.” CPT Stwórz grupę poli zawierających informacje o “reżyserze”, “gwiazdach” i “roku wydania”. Po instalacji i aktywacji pluginu ACF wejdź na jego stronę ustawień, stwórz nową grupę poli i ustaw zasady jej wyświetlania tak, aby odpowiadały warunkowi “typ artykułu = film”. Następnie dodaj kolejno pole “reżyser” (pole tekstowe), “gwiazdy” (pole tekstowe z obszarem na wpisy) oraz “rok wydania” (pole liczbowe). Po zapisaniu zmian podczas edycji informacji o filmie na stronie administracyjnej pojawią się wygodne pola do wpisywania tych danych.

hosting.com Hosting współdzielony
Wysoka wydajność dzięki procesorom AMD EPYC, pamięci masowej NVMe SSD i LiteSpeed, wewnętrzne wsparcie ekspertów 24/7, zaawansowane środki bezpieczeństwa, w tym SSL, brute force, ochrona przed złośliwym oprogramowaniem i DDoS, oszczędność do 73%

Tworzenie kustomowych metawinków za pomocą kodu

Jeśli chcesz kontrolować wszystko w całości za pomocą kodu, możesz to zrobić. CPT Rozwoj własnych metadanych (meta boxes) wymaga użycia API metadanych dostępnego w WordPress oraz funkcji do ich zapisu. Choć ilość kodu może być duża, to daje pełną swobodę dostosowania.

Poniżej znajduje się uproszczone przykład pokazujące, jak dodać pole “Reżyser” do informacji o “filmie”:

// 1. 添加元框
function add_movie_director_meta_box() {
    add_meta_box(
        'movie_director_meta_box', // 元框ID
        '导演信息', // 元框标题
        'render_movie_director_meta_box', // 回调函数,用于输出HTML
        'movie', // 目标文章类型
        'side', // 位置
        'default' // 优先级
    );
}
add_action( 'add_meta_boxes', 'add_movie_director_meta_box' );

// 2. 渲染元框内容
function render_movie_director_meta_box( $post ) {
    // 获取已保存的值
    $director = get_post_meta( $post->ID, '_movie_director', true );
    // 添加安全字段
    wp_nonce_field( 'movie_director_nonce_action', 'movie_director_nonce' );
    // 输出HTML
    echo '<label for="movie_director">导演姓名:</label>';
    echo '<input type="text" id="movie_director" name="movie_director" value="' . esc_attr( $director ) . '" style="width:100%;" />';
}

// 3. 保存元框数据
function save_movie_director_meta_data( $post_id ) {
    // 检查nonce、权限、自动保存等
    if ( ! isset( $_POST['movie_director_nonce'] ) || ! wp_verify_nonce( $_POST['movie_director_nonce'], 'movie_director_nonce_action' ) ) {
        return;
    }
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }
    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }
    // 保存数据
    if ( isset( $_POST['movie_director'] ) ) {
        update_post_meta( $post_id, '_movie_director', sanitize_text_field( $_POST['movie_director'] ) );
    }
}
add_action( 'save_post', 'save_movie_director_meta_data' );

Ten kod tworzy element graficzny (meta-box) umieszczonego w bocznym panelu, zawierający pole do wpisywania nazw reżysera. Podczas zapisu danych są stosowane standardowe procedury bezpieczeństwa WordPress, w tym m.in. sprawdzania poprawności wprowadzonych informacji. nonce Weryfikacja, sprawdzenie upoważnień oraz zapobieganie powtórnemu przetwarzaniu danych podczas automatycznego zapisu. Zapisane dane są… update_post_meta Funkcje są przechowywane w… wp_postmeta W tabeli.

Polecamy lekturę. Przewodnik po korzystaniu z pluginów dla platformy WooCommerce: od instalacji i konfiguracji po pełną obsługę sklepu

Tworzenie pliku szablonu dla typu artykułu dostosowanego

Utworzone. CPT Po wypełnieniu treści konieczne jest dostarczenie odpowiedniego szablonu do prezentacji na stronie internetowej. WordPress korzysta z systemu hierarchii szablonów i automatycznie wyszukuje właściwy plik szablonu, aby wyświetlić Twoją treść.

Szablon dla jednego typu artykułu

Gdy użytkownik odwiedza stronę zawierającą informacje o pojednym filmie (np. yoursite.com/movie/inceptionGdy użytkownik tworzy nowy tekst na stronie internetowej, WordPress wyszukuje pliki z wzorami (tzw. szablonów) w następującym porządku:
1. single-movie.php (Najkonkretniejsze)
2. single.php
3. singular.php
4. index.php

Hosting współdzielony InterServer
Hosting współdzielony $2.50 USD miesięcznie, pierwszy miesiąc $0.1 USD kod promocyjny tryinterserver, 461 skryptów aplikacji w chmurze, instalacja jednym kliknięciem.

Dlatego najlepszą praktyką jest stworzenie w folderze tematycznym pliku o nazwie single-movie.php W tym pliku możesz dowolnie dostosować sposób prezentacji filmu, korzystając z wcześniej utworzonych polów dostosowanych.

<p><strong>Witaj na mojej stronie!</strong></p>
<article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
    <header class="entry-header">
        <h1 class="entry-title"><?php the_title(); ?></h1>
        <div class="entry-meta">
            <span>导演:</span>
        </div>
    </header>
    <div class="entry-content">
        
        <!-- 显示其他自定义字段,如主演、上映年份 -->
        <p><strong>Główni aktorzy:</strong><?php the_field( 'lead_actor' ); ?></p>
        <p><strong>Rok wydania:</strong><?php the_field( 'release_year' ); ?></p>
    </div>
</article>
<?php get_footer(); ?>

Jeśli używasz pluginu ACF, możesz skorzystać z funkcji, które on oferuje. the_field() Funkcja umożliwia wygodne wyświetlenie wartości pola. Jeśli pole jest zapisane za pomocą udefiniowanego koda, to właśnie ten kod jest używany do jego wyświetlenia. get_post_meta() Funkcja.

Łączna szablon strony archiwów

Gdy użytkownik odwiedza stronę z listą filmów (np. yoursite.com/movie/Gdy to się wydarzy, WordPress będzie szukać:
1. archive-movie.php
2. archive.php
3. index.php

Utworzyć archive-movie.php W tym pliku można użyć wzorców nawigacyjnych („loopów”) dostępnych w WordPress, aby wyświetlić listę wszystkich filmów. Ponadto można dostosować kryteria wyszukiwania lub zastosować funkcję rozdzielania wyników na strony („paginacji”).

<p><strong>Witaj na mojej stronie!</strong></p>
<h1>Baza filmów</h1>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <article>
        <h2><a href="/pl/</?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <?php the_post_thumbnail( 'medium' ); ?>
        <p>导演:</p>
        <?php the_excerpt(); ?>
    </article>
<?php endwhile; the_posts_navigation(); else : ?>
    <p>Nie ma żadnych filmów dostępnych w tej chwili.</p>

Podsumowanie.

Opanowanie możliwości tworzenia własnych typów artykułów w WordPress jest kluczowym krokiem na drodze od prostego bloga do budowy zaawansowanego, dobrze zorganizowanego witryny internetowej. Zacznie się od… register_post_type Proces rozpoczyna się od rejestracji kodu funkcji, potem przechodzi do dodawania specjalnych polów za pomocą wtyczki ACF lub dostosowanych metryk, a na końcu obejmuje tworzenie unikalnych elementów według struktury szablonów. single-{cpt}.phparchive-{cpt}.php Pliki szablonów, wraz z całym procesem, stanowią całość. CPT Rozwój pracowniczych procesów (workflow development).

Poprzez praktyczne działanie stworzyliśmy typ treści “film”, który posiada własne menu w backendzie, specjalne pola danych oraz dostosowaną prezentację na frontendzie. Taka metodologia może zostać bez problemu przeniesiona na inne typy treści, takie jak “produkty”, “zbiory dzieł” czy “eventy”. Zrozumienie i stosowanie tych zasad znacząco poprawi twoje umiejętności jako programisty WordPress i umożliwi ci stworzenie dla użytkowników naprawdę indywidualnych, dostosowanych do ich potrzeb digitalnych doświadczeń.

FAQ – najczęściej zadawane pytania.

Jaka jest różnica pomiędzy niestandardowymi typami artykułów a niestandardowymi taksonomiami?

Autorskie typy artykułów służą do definiowania nowych rodzajów treści, np. “filmy” lub “produkty”. Natomiast autorskie kategorie (np. tagi lub rozszerzenia katalogów klasycznych) umożliwiają sortowanie i organizację tego rodzaju treści. Jeden autorski typ artykułu może być powiązany z kilkoma autorskimi kategoriami. Na przykład, typ artykułu “film” może obejmować różne kategorie, np. „komedie”, „biografie” itd. CPT Można powiązać dwie własne kategorie: “typ” (akcja, komedia) oraz “region” (chiński język, Hollywood).

CPT (Custom Post Type) należy zarejestrować w pliku functions.php tematu lub w osobnym pluginie. Jeśli chcesz, aby CPT był dostępny we wszystkich tematach, zarejestruj go w pliku functions.php tematu. Jeśli chcesz, aby był dostępny tylko w konkretnym pluginie, zarejestruj go w tym pluginie.

Zależy to od złożoności projektu oraz wymagań dotyczących jego portowalności. W przypadku projektów mocno powiązanych z określoną tematyką i niewymienialnych elementów… CPTMożna to umieścić w temacie. functions.php Tak. Ale najlepszą praktyką jest stworzenie osobnego modułu funkcjonalnego, w którym umieszczony zostanie kod potrzebny do rejestracji wszystkich dostosowanych typów artykułów i kategorii. Dzięki temu, nawet jeśli zmienisz temat strony, te typy treści oraz ich dane zostaną zachowane, a “funkcje” i “wygląd” witryny będą lepiej oddzielone.

Jak zmienić strukturę stałych linków w istniejącym typie artykułu dostosowanym do potrzeb użytkownika?

Możesz zarejestrować się. CPT W czasie przeprowadzania procedur… rewrite Ustawienia parametrów można też dokonać po rejestracji. register_post_type_args Należy zmienić ustawienia filtrów. Po dokonaniu zmian konieczne jest wejście do panelu administracyjnego WordPress i wybranie opcji “Ustawienia” → “Niepowtarzalne linki”. Następnie wystarczy kliknąć na “Zapisz zmiany”, aby aktualizować zasady przekierowania linków. Inaczej nowa struktura linków może nie zostać uwzględniona.

Dlaczego nie mogę zobaczyć własnego typu artykułu, który ustanowiłem, w interfejsie użytkownika?

Zwykle to wynika z niewłaściwego ustawienia parametrów rejestracji. Najpierw sprawdź funkcję rejestracji. $args w polu tablicznym 'public''publicly_queryable' Czy wszystkie parametry zostały ustawione? trueNastępnie, upewnij się, że… 'show_ui''show_in_nav_menus' Tak samo… trueNa koniec sprawdź plik z szablonem (template file).single-{cpt}.phparchive-{cpt}.phpCzy plik został poprawnie utworzony i znajduje się w katalogu głównym tematu akcji?