Custom Post Types - własne typy treści WordPress
Custom Post Types to sposób na rozszerzenie WordPressa poza posty i strony. Portfolio, oferty, zespół, wydarzenia - każdy typ treści może mieć własną strukturę. Podstawa budowy zaawansowanych stron WordPress.
Krótka odpowiedź
Kiedy używać Custom Post Types
Przykłady zastosowań:
- Portfolio/Projekty
- Oferty pracy
- Zespół/Pracownicy
- Wydarzenia
- Referencje/Testimonials
- Produkty (poza WooCommerce)
- FAQ
- Lokalizacje/Oddziały
Dlaczego nie zwykłe posty?
- Osobna sekcja w adminie
- Własne pola (custom fields)
- Własne taksonomie
- Dedykowane szablony
- Łatwiejsze zarządzanie
Kiedy NIE używać CPT:
- Jedna lub kilka podstron - użyj Page
- Treści blogowe - użyj Post + Categories
Rejestracja CPT przez kod
Podstawowa rejestracja:
```php
add_action('init', function() {
register_post_type('portfolio', [
'labels' => [
'name' => 'Portfolio',
'singular_name' => 'Projekt',
'add_new' => 'Dodaj projekt',
'add_new_item' => 'Dodaj nowy projekt',
'edit_item' => 'Edytuj projekt',
],
'public' => true,
'has_archive' => true,
'rewrite' => ['slug' => 'portfolio'],
'supports' => ['title', 'editor', 'thumbnail', 'excerpt'],
'menu_icon' => 'dashicons-portfolio',
'show_in_rest' => true, // Gutenberg
]);
});
```
Po rejestracji:
- Odśwież permalinki (Ustawienia → Bezpośrednie odnośniki → Zapisz)
CPT UI - wtyczka bez kodowania
Instalacja:
- Wtyczki → Custom Post Type UI
- Aktywuj
Tworzenie CPT:
1. CPT UI → Add/Edit Post Types
2. Post Type Slug (np. portfolio)
3. Plural Label (Portfolio)
4. Singular Label (Projekt)
5. Ustaw opcje (public, archive, supports)
6. Add Post Type
Zalety CPT UI:
- Bez kodowania
- Eksport do kodu PHP
- Łatwe zarządzanie
Wady:
- Zależność od wtyczki
- Mniej elastyczne niż kod
Eksport do kodu:
- CPT UI → Tools → Get Code
- Skopiuj do functions.php
- Dezaktywuj wtyczkę
Szablony dla Custom Post Types
Hierarchia szablonów:
- Pojedynczy: single-{post_type}.php → single.php
- Archiwum: archive-{post_type}.php → archive.php
Przykład single-portfolio.php: Klient:
```php
```
archive-portfolio.php:
- Loop przez projekty
- Thumbnails, excerpts
- Paginacja