Jak utworzyć własny typ wpisu (Custom Post Type) w WordPress?

WordPress domyślnie obsługuje wpisy i strony, ale czasami potrzebujemy czegoś więcej – np. „Portfolio”, „Opinie klientów” czy „Projekty”. Do tego służą Custom Post Types (CPT), czyli własne typy wpisów. Dzięki nim możesz rozszerzyć funkcjonalność strony i lepiej zarządzać treścią.


1. Czym jest Custom Post Type?

Custom Post Type to niestandardowy typ treści, który zachowuje się podobnie do wpisów i stron. Pojawia się w menu panelu administracyjnego i pozwala oddzielić np. artykuły blogowe od portfolio czy produktów.


2. Rejestracja prostego Custom Post Type

Dodaj poniższy kod do pliku functions.php w motywie potomnym lub we własnej wtyczce:

function utworz_portfolio_post_type() {
    register_post_type('portfolio', array(
        'labels' => array(
            'name' => __('Portfolio'),
            'singular_name' => __('Projekt'),
            'add_new_item' => __('Dodaj nowy projekt'),
            'edit_item' => __('Edytuj projekt')
        ),
        'public' => true,
        'has_archive' => true,
        'menu_icon' => 'dashicons-portfolio',
        'supports' => array('title', 'editor', 'thumbnail')
    ));
}
add_action('init', 'utworz_portfolio_post_type');

Po dodaniu kodu w panelu WordPress pojawi się nowa sekcja Portfolio, w której możesz tworzyć projekty.


3. Dodawanie niestandardowych pól

Możesz też dodać własne pola (custom fields), np. link do projektu:

add_action('add_meta_boxes', function() {
    add_meta_box('portfolio_link', 'Link do projektu', function($post) {
        $value = get_post_meta($post->ID, '_portfolio_link', true);
        echo '<input type="text" name="portfolio_link" value="' . esc_attr($value) . '" style="width:100%">';
    }, 'portfolio');
});

add_action('save_post', function($post_id) {
    if (array_key_exists('portfolio_link', $_POST)) {
        update_post_meta($post_id, '_portfolio_link', sanitize_text_field($_POST['portfolio_link']));
    }
});

Teraz w edycji projektu będziesz mógł dodać dodatkowy link.


4. Wyświetlanie CPT na stronie

Aby wyświetlić wpisy z „Portfolio”, użyj pętli WP_Query:

$query = new WP_Query(array('post_type' => 'portfolio'));
if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        echo '<h2>' . get_the_title() . '</h2>';
        the_content();
    }
    wp_reset_postdata();
}

5. Dlaczego warto korzystać z CPT?

  • Lepsza organizacja treści
  • Oddzielenie różnych typów danych (np. blog vs. portfolio)
  • Możliwość rozbudowy o własne taksonomie i pola
  • Profesjonalna struktura strony

Podsumowanie

Custom Post Types to jedno z najpotężniejszych narzędzi WordPress. Dzięki nim można stworzyć w pełni rozbudowane systemy treści – od portfolio, przez FAQ, aż po katalog produktów.

KROK 1 Z 4

Z CZYM POTRZEBUJESZ POMOCY?