architektura SASS dla WordPress custom theme
Dobrze dobrana architektura katalogów i plików sass ułatwia kodowanie, jest czytelna i skalowalna. Dzięki czemu współpraca z innymi developerami czy wprowadzanie kolejnych zmian jest znacznie ułatwione.
Rekomendowana struktura katalogów (przykład)
my-theme/
├── assets/
│ └── scss/
│ ├── abstracts/ # bez CSS output
│ │ ├── _variables.sass
│ │ ├── _colors.sass
│ │ ├── _mixins.sass
│ │ ├── _functions.sass
│ │ └── _breakpoints.sass
│ │
│ ├── base/ # podstawy projektu
│ │ ├── _reset.sass
│ │ ├── _typography.sass
│ │ ├── _helpers.sass
│ │ └── _global.sass
│ │
│ ├── layout/ # layout strony
│ │ ├── _header.sass
│ │ ├── _footer.sass
│ │ ├── _grid.sass
│ │ └── _navigation.sass
│ │
│ ├── components/ # UI / reusable
│ │ ├── _button.sass
│ │ ├── _form.sass
│ │ ├── _card.sass
│ │ └── _modal.sass
│ │
│ ├── blocks/ # Gutenberg / ACF blocks
│ │ ├── _hero.sass
│ │ ├── _cta.sass
│ │ └── _gallery.sass
│ │
│ ├── pages/ # strony specjalne
│ │ ├── _home.sass
│ │ ├── _contact.sass
│ │ └── _blog.sass
│ │
│ ├── vendors/ # zewnętrzne style
│ │ └── _slick.sass
│ │
│ ├── main.sass # JEDYNY plik kompilowany
│ └── editor.sass # style edytora WP
│
├── style.css # wymagany przez WP (header)
└── functions.php
Kluczowe zasady
- tylko jeden plik kompilowany czyli main.scss → style.min.css
- każdy plik zaczynający się od _ nie generuje CSS i służy tylko do importów
- używaj @use, nie @import (import jest deprecated)
- Gutenberg / ACF -> każdy blok = osobny plik i odpowiednie nazewnictwo class .block-testimonial – dzięki temu łatwo usunąć lub przenieść blok
Czego NIE robić
- nie kompiluj _header.sass,
- nie wrzucaj wielu CSS do frontu,
- jednego style.scss z 3000 linii,
- mieszania bloków, komponentów i layoutu,
- wielu plików CSS enqueue’owanych w WP,
- stylowania „po tagach” zamiast klas
Style edytora (editor.scss)
body.editor-styles-wrapper {
@use 'abstracts/variables';
h1 {
color: variables.$primary;
}
}
W functions.php
add_theme_support('editor-styles');
add_editor_style('assets/css/editor.css');
Czym jest layout a czym są komponenty a czym Bloki?
layout – duże, strukturalne części strony (szkielet)
components – małe, wielokrotnego użytku elementy UI (klocki)
Layout
Layout odpowiada na pytanie: „Jak strona jest zbudowana?”
- występują raz lub kilka razy
- definiują układ, nie detale
- często są powiązane z HTML/PHP theme
Przykłady layoutu w WordPressie:
- header – jest na każdej stronie, trzyma logo + menu
- footer – globalny, strukturalny
- main – kontener treści
- sidebar – układ kolumn
- navigation – główna nawigacja
- grid – system kolumn
Components
Components odpowiadają na pytanie: „Z czego strona się składa?”
elementy:
- małe
- powtarzalne
- niezależne od miejsca
- można je wrzucić do headera, bloku, strony
- .btn nie wie, czy jest w headerze, footerze czy bloku
- ma wyglądać tak samo wszędzie
Przykłady komponentów:
- button – header, hero, form, CTA
- card – listingi, blog, slider
- form – kontakt, popup
- input – formularze
- icon – wszędzie
Kluczowa zasada (najważniejsza)
- Layout NIE styluje komponentów
- Komponent NIE zależy od layoutu
A gdzie są Bloki (Gutenberg / ACF)?
To trzecia kategoria, bardzo ważna w WP.
Blok:
- jest kawałkiem strony
- składa się z:
- layoutu
- komponentów
- może używać komponentów
- nie zmienia ich definicji
Szybka ściąga
layout
- header
- footer
- grid
- section
- container
- kolumny
components
- button
- card
- input
- badge
- icon
- modal
blocks
- hero
- CTA
- testimonials
- pricing
Jak się nie pomylić? praktyczna reguła
Zadaj sobie pytanie:
„Czy ten element mógłby istnieć w innym miejscu bez zmiany CSS?”
- ✅ tak → component
- ❌ nie → layout lub block
Podsumowanie
- layout = szkielet strony
- components = klocki UI
- blocks = sekcje treści (WP)
- components są nie zależne od miejsca
- layout ustawia strukturę, nie wygląd detali
Hope this helps and happy coding :)
Zobacz jeszcze
skróty numeryczne, numeronimy
Numeronim to skrótowiec, w którym pierwsza litera, ostatnia litera i liczba pomiędzy nimi (reprezentująca liczbę pominiętych liter) tworzą nowe słowo. Czyli zamiast pisać całe, długie...
shortcuts
praktyczna, zalecana i często spotykana struktura katalogów dla WordPress custom theme
Poniżej struktura katalogów dla custom theme WordPress, zgodna z dobrymi praktykami i gotowa zarówno na klasyczne WP, jak i Gutenberga. W my-theme-wp zamieszczamy: assets src -...