Przejdź do treści
EN Wyceń projekt

WordPress bez motywu. Czysty kod, pełna kontrola.

PURITY to wtyczka, która wyłącza system motywów WordPressa i oddaje Ci cały dokument: HTML, PHP, CSS i JS. Z wbudowanym SEO, wielojęzycznością, API dla agentów AI i zestawem narzędzi, które zastępują kilkanaście wtyczek.

  • Bezpłatna
  • WordPress 6.0+ · PHP 7.4+
  • Automatyczne aktualizacje
Sekcja 1 · hero

01 Jak to działa

WordPress zostaje. Motyw znika.

PURITY przechwytuje każde żądanie, zanim WordPress sięgnie po motyw. Zostaje to, co w WordPressie najlepsze: baza, panel, wtyczki i WooCommerce. Dokument HTML piszesz sam, od pierwszego do ostatniego znaku.

  1. 1Żądaniektoś otwiera adres strony
  2. 2Wybór szablonutyp strony + warunki wyświetlania
  3. 3Sekcje, jedna po drugiej
    PHPCSSHTMLJS
    zawsze w tej kolejności
  4. 4Gotowy dokumentbez znaczników motywu i bez zbędnych skryptów
97/100PageSpeed websbutler.com na komputerze
84/100PageSpeed websbutler.com na telefonie
100%podstron websbutler.com działa na PURITY, razem z tą

Wyniki z audytu websbutler.com z 1 października 2026. Nagłówek, stopka, formularze i każda sekcja tej witryny to zwykły kod zapisany w PURITY.

02 Wszystkie funkcje

45 funkcji. Jedna wtyczka.

Bez wersji „pro” i bez dodatków do dokupienia. Wszystko poniżej jest w tej samej paczce.

  • Szablony jako kod

    Nagłówek, stopka, wpis, archiwum i 404 piszesz w HTML, PHP, CSS i JS. Żadnego generowanego kodu.

  • Sekcje z czterema polami

    Każda sekcja ma osobne pole PHP, CSS, HTML i JS oraz własny zasięg zmiennych.

  • Warunki wyświetlania

    Jeden typ szablonu, wiele wariantów: według języka, konkretnych stron albo rodzaju strony.

  • Szablony własnych typów treści

    Każdy publiczny typ treści dostaje własny szablon single_{typ}, bez dodatkowej konfiguracji.

  • Builder na zwykłych stronach i wpisach

    Włączasz go osobno dla każdej strony, więc migrujesz witrynę kawałek po kawałku.

  • Wersje robocze

    Każdy element ma szkic obok wersji publicznej. Testujesz zmianę, zanim zobaczą ją odwiedzający.

  • Znaczniki szkiców

    Czerwona kropka przy elemencie i licznik w menu pokazują, co czeka na publikację.

  • Duplikowanie

    Jedno kliknięcie kopiuje stronę, szablon albo snippet ze wszystkimi sekcjami i ustawieniami.

  • Loop Builder

    Projektujesz kartę wpisu albo produktu i wyświetlasz listę shortcode’em [smb_loop].

03 Mniej wtyczek

Jedna wtyczka zamiast dwunastu.

Typowa strona na WordPressie to motyw, builder i kilkanaście wtyczek, z których każda dokłada własne skrypty, własne aktualizacje i własne luki. PURITY robi te same rzeczy w jednym miejscu.

  • Mniej kodu do pobrania przy każdym wejściu na stronę
  • Jedna aktualizacja zamiast kilkunastu
  • Mniej miejsc, w których coś może się zepsuć
  • Motyw
  • Page builder
  • Wtyczka SEO
  • Mapa witryny
  • Wtyczka językowa
  • Snippety kodu
  • SMTP
  • Baner cookies
  • Konwerter WebP
  • Duplikowanie stron
  • Logowanie Google
  • Licznik odwiedzin
  • PURITYwszystko powyżej

04 SEO i API

Czytelna dla Google. Otwarta dla agentów AI.

Wyłączenie motywu usuwa też wszystko, co WordPress wstawia do sekcji head. Moduł SEO oddaje te znaczniki w uporządkowanej formie, a API pozwala narzędziom czytać i zapisywać kod strony.

<head>generowane przez PURITY
<title>PURITY: WordPress bez motywu, w czystym kodzie</title><meta name="description" content="Wtyczka, która wyłącza motyw i oddaje Ci dokument…"><link rel="canonical" href="https://websbutler.com/purity-by-websbutler/"><meta name="robots" content="index, follow"><link rel="alternate" hreflang="pl" href="https://websbutler.com/purity-by-websbutler/"><meta property="og:title" content="PURITY by WebsButler"><meta property="og:image" content="https://websbutler.com/…/purity.webp"><meta name="twitter:card" content="summary_large_image">
  • /sitemap.xml
  • /llms.txt
  • robots.txt
terminalpurity/v1
# agent AI albo Twój skrypt, przez REST APIGET  /wp-json/purity/v1/list→ 54 elementy: strony, szablony, snippetyGET  /wp-json/purity/v1/element/626→ sekcje: html, php, css, jsPOST /wp-json/purity/v1/element/626?is_draft=true→ "Draft saved securely."POST /wp-json/purity/v1/element/626→ "Element updated live."POST /wp-json/purity/v1/seo→ tytuł i opis zapisane
  • klucz dla każdej witryny
  • szkic → publikacja
Ta witryna jest tego przykładem.

Strony websbutler.com buduję razem z Claude: agent pobiera kod sekcji przez API, wprowadza zmianę, zapisuje wersję roboczą, a po sprawdzeniu publikuje. Opisy meta, tytuły i dane strukturalne ustawia tym samym kanałem.

05 Dokumentacja

Wszystko, żeby zacząć.

Pełna dokumentacja techniczna. Rozwiń tylko ten fragment, który Cię interesuje.

  • Wersja 3.106
  • WordPress 6.0+
  • PHP 7.4+
01

Szybki start i instalacja

PURITY zastępuje system motywów WordPressa. Zamiast walczyć z style.css motywu, przejmujesz pełną kontrolę nad dokumentem HTML.

  1. Wgraj katalog do /wp-content/plugins/purity/.
  2. Aktywuj wtyczkę w panelu WordPressa.
  3. Utwórz pierwszy szablon w PURITY → Szablony.
  4. Ustaw Typ szablonu (np. Nagłówek, Stopka, Wpis).
  5. Dodaj warunki wyświetlania i opublikuj.
Nazwa katalogu musi brzmieć dokładnie purity — bez numeru wersji. Aktualizacje automatyczne rozpoznają wtyczkę po nazwie katalogu i przestaną działać, jeśli ją zmienisz.

Struktura plików

purity/ ├── purity.php // punkt wejścia, ładuje moduły ├── includes/ │ ├── post-types.php // typy treści smb_template, smb_snippet │ ├── meta-boxes.php // edytor: zakładki HTML/PHP/CSS/JS │ ├── template-loader.php // routing szablonów │ ├── conditions.php // warunki wyświetlania │ ├── code-snippets.php // globalne snippety │ ├── loop-builder.php // shortcode [smb_loop] │ ├── multilingual.php // system wielojęzyczny │ ├── seo-head.php // meta SEO, hreflang, llms.txt │ ├── api-bridge.php // REST API │ └── toolkit.php // SMTP, WebP, logi, cookies ├── templates/ // canvas.php, custom-page.php └── plugin-update-checker/ // aktualizacje z GitHuba
02

Jak działa renderowanie

PURITY przechwytuje każde żądanie przez filtr template_include (priorytet 99), rozpoznaje typ strony i szuka pasującego szablonu. Gdy szablon przejmuje kontrolę, motyw jest całkowicie wyłączany.

Kolejność w obrębie jednej sekcji

Każda sekcja renderuje się w stałej kolejności — to nie jest szczegół kosmetyczny, tylko podstawa działania:

  1. PHP — wykonuje się pierwszy, przygotowuje zmienne.
  2. CSS — trafia do dokumentu w znaczniku <style>.
  3. HTML — może korzystać ze zmiennych z pola PHP.
  4. JS — na końcu, w znaczniku <script>.
Każda sekcja ma własny zasięg zmiennych. Zmienna ustawiona w sekcji 1 nie istnieje w sekcji 2. Funkcje są globalne, zmienne nie — jeśli potrzebujesz wspólnych danych, zamknij je w funkcji zabezpieczonej przez function_exists().
CSS sekcji trafia do dokumentu przed jej HTML-em, w treści strony. Oznacza to dwie rzeczy: selektor sąsiadujący wycelowany w „pierwszy blok strony” trafi w element <style>, a CSS globalnego snippetu zawsze przegrywa kaskadę z CSS-em sekcji przy tej samej specyficzności.
03

Typy szablonów i warunki wyświetlania

Typ szablonu decyduje, gdzie się pojawi. Gdy pasuje kilka szablonów, PURITY bierze najnowszy, który spełnia warunki wyświetlania.

TypKiedy się renderuje
headerNa górze każdej strony obsługiwanej przez PURITY
footerNa dole każdej strony obsługiwanej przez PURITY
single_postPojedynczy wpis blogowy
archiveListy wpisów, archiwa, strona bloga
404Strona „nie znaleziono”
single_{typ}Pojedynczy wpis własnego typu treści

Wzorzec single_{typ} jest dynamiczny — każdy publiczny, własny typ treści zarejestrowany na stronie pojawi się automatycznie na liście wyboru.

Warunki wyświetlania

Ten sam typ szablonu może mieć kilka wariantów rozdzielonych warunkami: język, konkretne identyfikatory stron albo rodzaj strony. Dzięki temu jedna instalacja obsługuje np. osobny nagłówek dla wersji polskiej i angielskiej.

04

Klucze post meta — referencja

PURITY nie tworzy własnych tabel dla treści — wszystko siedzi w standardowym post meta. Poniżej klucze używane w bieżącej wersji.

KluczZawartość
_smb_sectionsTablica sekcji {html, php, css, js} — wersja live
_smb_sections_draftWersja robocza tej samej tablicy
_smb_template_typeTyp szablonu (header, footer, 404…)
_smb_conditionsWarunki wyświetlania
_smb_use_builder1 = zwykła strona WP przejęta przez builder
_smb_languageKod języka treści
_smb_translation_groupŁączy tłumaczenia tej samej strony
_smb_seo_descriptionRęczny opis meta (nadpisuje automatyczny)
_smb_html_codeStarszy format: pojedyncza sekcja HTML
_smb_php_codeStarszy format: pojedyncza sekcja PHP
_smb_css_codeStarszy format: pojedyncza sekcja CSS
_smb_js_codeStarszy format: pojedyncza sekcja JS
Klucze w starszym formacie mają odpowiedniki robocze z przyrostkiem _draft. Nowe wdrożenia powinny używać _smb_sections.
05

Snippety kodu i pętle

Snippety to globalne fragmenty kodu wykonywane w wybranym miejscu cyklu życia strony — idealne dla Google Tag Managera, Meta Pixela czy globalnego resetu CSS.

LokalizacjaZastosowanie
initLogika serwerowa, rejestracja typów treści
wp_headStyle globalne, tagi weryfikacyjne, skrypty analityczne
wp_body_openKod tuż po otwarciu <body>
wp_footerSkrypty, które nie mogą blokować renderowania
admin_headZmiany w panelu administracyjnym

Snippety mają priorytet i wyłącznik. Każdy jest wykonywany w bloku try/catch, więc błąd w jednym z nich nie kładzie całej strony.

Loop Builder

Zaprojektuj wygląd pojedynczej karty wpisu lub produktu, a następnie wyświetl listę w dowolnym miejscu za pomocą shortcode’u:

[smb_loop] // treść zapętlona według zapytania
06

System wielojęzyczny

Wbudowany system tłumaczeń w stylu Polylang, obsługujący 12 języków — bez dodatkowych wtyczek.

  • _smb_language oznacza język konkretnej strony.
  • _smb_translation_group spina wersje językowe tej samej treści.
  • Warunki wyświetlania pozwalają przypisać nagłówek i stopkę do języka.
Od wersji 3.90 te same dwa klucze zasilają automatyczne znaczniki hreflang, dzięki którym wyszukiwarki rozumieją, że strony są wersjami językowymi, a nie duplikatami.
07

SEO

Ponieważ PURITY wyłącza motyw, usuwa też wszystkie znaczniki, które WordPress normalnie umieszcza w sekcji <head>. Moduł SEO przywraca je i uzupełnia.

  • Opis meta — ręczny, z zajawki wpisu albo wygenerowany automatycznie z treści sekcji.
  • Adres kanoniczny oraz dyrektywa robots.
  • Open Graph i karty na X — podgląd przy udostępnianiu.
  • hreflang — budowany z grup tłumaczeń.
  • /llms.txt — indeks treści dla wyszukiwarek opartych na AI.

Własny opis ustawisz kluczem _smb_seo_description. Jeśli go nie ma, moduł użyje zajawki, a w dalszej kolejności wyciągnie pierwsze zdania z treści strony.

Wyłączenie modułu

Jeśli strona korzysta z Yoasta albo Rank Matha, moduł sam ustępuje im pola na stronach spoza PURITY. Można go też wyłączyć całkowicie:

add_filter( 'smb_seo_enabled', '__return_false' );
08

REST API

PURITY udostępnia własne API w przestrzeni purity/v1. Każde żądanie wymaga nagłówka X-Purity-Token z kluczem wygenerowanym dla danej strony.

EndpointDziałanie
GET /listWszystkie strony, szablony i snippety
GET /element/{id}Pobranie kodu elementu
POST /element/{id}Zapis kodu (obsługuje wersje robocze)
POST /createUtworzenie nowego szablonu lub strony
GET|POST /mediaBiblioteka multimediów
GET|POST /seoTytuły SEO, opisy meta i obraz podglądu
POST /translate/{id}Kopia elementu w innym języku
POST /linkPowiązanie istniejących wersji językowych
GET /products, GET /statsProdukty i sprzedaż WooCommerce
Klucz API daje pełny dostęp do kodu strony. Traktuj go jak hasło: nie umieszczaj w repozytoriach ani po stronie przeglądarki.
09

Pułapki z prawdziwych wdrożeń

Poniższe błędy powtarzały się w kolejnych projektach i żadnego nie dało się rozpoznać z samego CSS-u. Warto je sprawdzić zanim coś się zepsuje.

1. Ujemne marginesy „wyłamujące” sekcję z motywu

Objaw Sekcja hero jest za wysoka, widać tylko jej górny fragment, a pod nią pojawia się niewyjaśniona pusta przestrzeń.

Przyczyna Kod próbuje skasować padding kontenera motywu parą ujemny margines + dodatni padding. PURITY renderuje bezpośrednio w <body>, więc nie ma czego kasować — realna wysokość rośnie o dołożony padding.

Rozwiązanie Usuń takie pary całkowicie. Wystarczy min-height: 100vh bez marginesów. Poziome wyłamanie na pełną szerokość to osobna, poprawna technika — nie myl jej z kompensacją pionową.

2. Brak globalnego tła = białe przebłyski

Objaw Między dwiema ciemnymi sekcjami pojawia się jasny pasek, choć każda z osobna wygląda poprawnie.

Przyczyna Tła nie dziedziczą się między sąsiednimi sekcjami. Każdy piksel niepokryty własnym tłem sekcji pokazuje domyślną biel przeglądarki.

Rozwiązanie Ustaw jednolite tło na html, body jako pierwszą regułę globalną. Sekcje z tłem background-attachment: fixed muszą dodatkowo mieć własny background-color.

3. Dwa zaokrąglone pudełka, które miały być jednym

Objaw Pływający nagłówek pokazuje szew, niedopasowane zaokrąglenie albo kolorowy pasek przy rozwijaniu menu.

Przyczyna Stan zamknięty i otwarty zbudowano jako dwa osobne elementy, każdy z własnym zaokrągleniem i tłem. Najmniejsza różnica staje się widoczna.

Rozwiązanie Jeden kontener na oba stany, overflow: hidden na elemencie zewnętrznym, rozwijanie przez max-height w środku. Chowając panel, łącz max-height: 0 z opacity: 0 — samo zerowanie wysokości potrafi zostawić widoczne krawędzie.

4. position: sticky potrafi po cichu przestać działać

Objaw Przyklejony nagłówek działa na jednych stronach, a na innych odjeżdża przy przewijaniu — mimo identycznego CSS-u.

Przyczyna sticky psuje dowolny element nadrzędny z overflow innym niż visible albo tworzący kontekst nakładania. Struktura nadrzędna bywa różna na różnych typach stron.

Rozwiązanie Dla nagłówków wybieraj position: fixed — odnosi się do okna przeglądarki i omija cały ten problem.

5. align-items: center nie gwarantuje wyrównania

Objaw Logo i przycisk menu w jednym rzędzie wyglądają na przesunięte względem siebie.

Przyczyna Wyśrodkowane zostaje pudełko każdego elementu z osobna. Obrazek w odnośniku dziedziczy interlinię i dostaje niewidoczną nadwyżkę wysokości, której przycisk nie ma.

Rozwiązanie Nadaj obu elementom tę samą jawną wysokość i ustaw line-height: 0 na opakowaniu obrazka.

Zasada ogólna: jeśli układ nie zgadza się z zapisanym CSS-em, nie zgaduj kolejnych reguł. Sprawdź wyliczone wartości w narzędziach deweloperskich przeglądarki. Zrzut ekranu nie odróżni błędnego CSS-u od CSS-u nadpisanego lub zablokowanego przez pamięć podręczną.
10

Migracja i awaryjne wyłączenie

Przejście z Elementora lub Breakdance

  1. Skopiuj wyrenderowany HTML z inspektora przeglądarki.
  2. Wklej go do pola HTML sekcji.
  3. Przenieś style do pola CSS, skrypty do pola JS.
  4. Usuń shortcode’y starego buildera.
  5. Włącz builder na stronie i porównaj obie wersje.
Migruj stronę po stronie. Builder włącza się osobno dla każdej strony, więc reszta serwisu działa nieprzerwanie na starym rozwiązaniu.

Gdy coś pójdzie nie tak

Kod PHP sekcji wykonuje się po stronie serwera — błąd składni potrafi zatrzymać renderowanie strony. Dlatego każda sekcja ma wersję roboczą: testuj zmiany w wersji roboczej, publikuj dopiero po sprawdzeniu.

Jeśli strona przestała się otwierać, wyłącz wtyczkę przez FTP — zmień nazwę katalogu purity na dowolną inną. WordPress automatycznie ją dezaktywuje i wróci do motywu. Treść pozostaje nienaruszona w bazie danych; po przywróceniu nazwy wszystko wraca.

Nie usuwaj wpisów post meta ręcznie w bazie. To jedyne miejsce, w którym przechowywana jest treść zbudowana w PURITY — skasowanie ich jest nieodwracalne.

06 Pytania i odpowiedzi

PURITY: konkretnie.

Masz inne pytanie? Napisz, odpowiem osobiście, zwykle w ciągu godziny.

Zadaj pytanie

Czy PURITY jest darmowa?

Tak. Wtyczkę pobierasz bezpłatnie i instalujesz jak każdą inną. Nie ma wersji „pro” ani płatnych dodatków.

Dla kogo jest PURITY?

Dla osób, które wolą pisać kod niż przeciągać klocki: programistów, agencji i zespołów pracujących z agentami AI. Jeśli nie chcesz dotykać kodu, lepszym wyborem będzie strona, którą buduję na PURITY za Ciebie.

Czy muszę znać PHP?

Nie. Samo HTML i CSS wystarczą, żeby zbudować stronę. PHP przydaje się tam, gdzie treść ma pochodzić z WordPressa: tytuły wpisów, pola własne, produkty sklepu.

Co stanie się z moim motywem i wtyczkami?

Motyw przestaje być używany na stronach obsługiwanych przez PURITY, ale nie musisz go usuwać. Wtyczki, baza danych i panel WordPressa działają dalej. Builder włączasz osobno dla każdej strony, więc reszta serwisu zostaje na starym rozwiązaniu, dopóki jej nie przeniesiesz.

Jak przenieść stronę z Elementora albo innego buildera?

Kopiujesz wyrenderowany HTML z przeglądarki do pola HTML sekcji, style do pola CSS, skrypty do pola JS i usuwasz shortcode’y starego buildera. Migrujesz stronę po stronie, porównując obie wersje.

Co, jeśli błąd w kodzie zatrzyma stronę?

Zmiany testujesz w wersji roboczej, zanim je opublikujesz. Gdyby strona mimo to przestała się otwierać, zmieniasz przez FTP nazwę katalogu wtyczki: WordPress ją wyłączy i wróci do motywu, a treść zostanie nienaruszona w bazie.

Czy PURITY działa z WooCommerce?

Tak. Możesz zbudować własne szablony produktu, archiwum, koszyka i kasy, a przez API odczytywać produkty, zmieniać ceny i pobierać dane sprzedaży.

07 Kontakt

Wolisz, żebym zbudował to za Ciebie?

PURITY to narzędzie, na którym buduję strony i sklepy dla klientów. Napisz, czego potrzebujesz, a odpowiem osobiście.

Chcesz najpierw zobaczyć efekt? Case study to strony zbudowane na PURITY, a darmowy audyt pokaże, ile może zyskać Twoja.

Czego dotyczy wiadomość?