{"id":2803,"date":"2025-07-30T05:00:00","date_gmt":"2025-07-30T04:00:00","guid":{"rendered":"https:\/\/wlc.team\/?p=2803"},"modified":"2025-07-30T05:00:00","modified_gmt":"2025-07-30T04:00:00","slug":"jak-stworzyc-wlasny-motyw-wordpress","status":"publish","type":"post","link":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/","title":{"rendered":"Jak stworzy\u0107 w\u0142asny motyw WordPress?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">W\u0142asny motyw WordPress oznacza zbudowanie warstwy prezentacji samodzielnie, zamiast dostosowywania cudzej. W 2026 roku ta decyzja zaczyna si\u0119 od drugiej: czy budujesz motyw blokowy, klasyczny, czy hybryd\u0119 obu. Odpowied\u017a zmienia to, jakich plik\u00f3w potrzebujesz, gdzie mieszka warstwa styl\u00f3w i jak\u0105 kontrol\u0119 dostaj\u0105 redaktorzy. Ten przewodnik opisuje obie \u015bcie\u017cki, wymagane pliki, hierarchi\u0119 szablon\u00f3w oraz praktyki bezpiecze\u0144stwa i testowania, kt\u00f3re odr\u00f3\u017cniaj\u0105 motyw do utrzymania od takiego, kt\u00f3ry za rok napiszesz od nowa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jaki rodzaj motywu wybra\u0107?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress obs\u0142uguje dwie architektury motyw\u00f3w i nie s\u0105 one wymienne.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Motywy blokowe<\/strong> definiuj\u0105 szablony jako pliki HTML z\u0142o\u017cone z blok\u00f3w, ze stylami scentralizowanymi w pliku <code>theme.json<\/code>. Redaktorzy zmieniaj\u0105 uk\u0142ad i szablony przez edytor witryny, bez dotykania kodu. To kierunek rozwoju platformy, a domy\u015blne motywy WordPressa s\u0105 blokowe od wersji Twenty Twenty-Two.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Motywy klasyczne<\/strong> definiuj\u0105 szablony jako pliki PHP i styluj\u0105 je zwyk\u0142ym CSS-em. Daj\u0105 precyzyjn\u0105 kontrol\u0119 nad tym, co si\u0119 \u0142aduje, i opieraj\u0105 si\u0119 na hierarchii, kt\u00f3r\u0105 wi\u0119kszo\u015b\u0107 programist\u00f3w WordPressa ju\u017c zna. Pozostaj\u0105 uzasadnionym wyborem, zw\u0142aszcza gdy chcesz ograniczy\u0107 zakres zmian dost\u0119pny dla redakcji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Motywy hybrydowe<\/strong> to motywy klasyczne korzystaj\u0105ce z <code>theme.json<\/code> do zdefiniowania token\u00f3w projektowych, bez przenoszenia szablon\u00f3w do edytora witryny. W praktyce to cz\u0119ste i pragmatyczne rozwi\u0105zanie: dostajesz system projektowy respektowany przez edytor blok\u00f3w, zachowuj\u0105c szablony w PHP.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wybierz motyw blokowy, gdy redakcja potrzebuje realnej kontroli nad uk\u0142adem, a projekt da si\u0119 wyrazi\u0107 blokami. Wybierz klasyczny lub hybrydowy, gdy szablony zawieraj\u0105 rozbudowan\u0105 logik\u0119, gdy potrzebujesz \u015bcis\u0142ej kontroli nad tym, co si\u0119 \u0142aduje, albo gdy klient wprost oczekuje ograniczonego zakresu edycji.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jakie pliki s\u0105 faktycznie wymagane?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Minimum zale\u017cy od wybranej architektury.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Typ motywu<\/th><th>Wymagane<\/th><th>Zalecane<\/th><\/tr><\/thead><tbody><tr><td><strong>Blokowy<\/strong><\/td><td><code>style.css<\/code>, <code>templates\/index.html<\/code><\/td><td><code>theme.json<\/code>, <code>parts\/header.html<\/code>, <code>parts\/footer.html<\/code>, <code>functions.php<\/code><\/td><\/tr><tr><td><strong>Klasyczny<\/strong><\/td><td><code>style.css<\/code>, <code>index.php<\/code><\/td><td><code>functions.php<\/code>, <code>header.php<\/code>, <code>footer.php<\/code>, <code>theme.json<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><code>style.css<\/code> jest wymagany w obu przypadkach, bo to jego nag\u0142\u00f3wek pozwala WordPressowi rozpozna\u0107 motyw:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">css<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/*\nTheme Name: Acme\nTheme URI: https:\/\/example.com\/acme\nAuthor: Acme\nDescription: Motyw dedykowany dla Acme.\nVersion: 1.0.0\nRequires at least: 6.6\nRequires PHP: 8.1\nLicense: GPLv2 or later\nLicense URI: https:\/\/www.gnu.org\/licenses\/gpl-2.0.html\nText Domain: acme\n*\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bez tego nag\u0142\u00f3wka WordPress nie poka\u017ce katalogu na li\u015bcie motyw\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Struktura motywu blokowego wygl\u0105da zwykle tak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>acme\/\n  style.css\n  theme.json\n  functions.php\n  templates\/\n    index.html\n    single.html\n    page.html\n    archive.html\n    404.html\n  parts\/\n    header.html\n    footer.html\n  patterns\/\n    hero.php\n  styles\/\n    dark.json<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Motyw klasyczny trzyma szablony jako pliki PHP w katalogu g\u0142\u00f3wnym: <code>index.php<\/code>, <code>single.php<\/code>, <code>page.php<\/code>, <code>archive.php<\/code>, <code>search.php<\/code>, <code>404.php<\/code>, plus <code>header.php<\/code> i <code>footer.php<\/code> jako cz\u0119\u015bci wsp\u00f3lne.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak poprawnie przygotowa\u0107 functions.php?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>functions.php<\/code> zachowuje si\u0119 jak wtyczka do\u0142\u0105czona do motywu. Dwie zasady wywo\u0142uj\u0105 wi\u0119cej nieporozumie\u0144 ni\u017c cokolwiek innego w tworzeniu motyw\u00f3w, wi\u0119c warto je poda\u0107 wprost.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Otwieraj\u0105cy znacznik <code>&lt;?php<\/code> jest wymagany.<\/strong> <strong>Zamykaj\u0105cego <code>?&gt;<\/code> nie umieszczamy<\/strong>, poniewa\u017c znaki puste po nim mog\u0105 wygenerowa\u0107 wyj\u015bcie przed wys\u0142aniem nag\u0142\u00f3wk\u00f3w i zepsu\u0107 serwis w spos\u00f3b trudny do zdiagnozowania.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nif ( ! defined( 'ABSPATH' ) ) {\n\texit;\n}\n\nadd_action( 'after_setup_theme', 'acme_setup' );\nfunction acme_setup() {\n\tadd_theme_support( 'post-thumbnails' );\n\tadd_theme_support( 'title-tag' );\n\tadd_theme_support( 'html5', array( 'search-form', 'comment-form', 'gallery', 'caption' ) );\n\tload_theme_textdomain( 'acme', get_template_directory() . '\/languages' );\n}\n\nadd_action( 'wp_enqueue_scripts', 'acme_assets' );\nfunction acme_assets() {\n\t$stylesheet = get_stylesheet_directory() . '\/style.css';\n\n\twp_enqueue_style(\n\t\t'acme-style',\n\t\tget_stylesheet_uri(),\n\t\tarray(),\n\t\tfile_exists( $stylesheet ) ? filemtime( $stylesheet ) : '1.0.0'\n\t);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dwie rzeczy warte zapami\u0119tania. Poprzedzaj nazwy funkcji prefiksem, bo przestrze\u0144 nazw jest wsp\u00f3lna z wtyczkami i rdzeniem. Wersjonuj zasoby przez <code>filemtime()<\/code>, a nie sta\u0142ym ci\u0105giem, \u017ceby przegl\u0105darki pobiera\u0142y zmiany bez r\u0119cznej podbitki wersji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nigdy nie wpinaj arkuszy styl\u00f3w i skrypt\u00f3w bezpo\u015brednio w kod szablonu. Kolejkowanie pozwala WordPressowi i warstwie cache zarz\u0105dza\u0107 zale\u017cno\u015bciami i kolejno\u015bci\u0105 \u0142adowania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak dzia\u0142a theme.json?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>theme.json<\/code> to miejsce, w kt\u00f3rym wsp\u00f3\u0142czesny motyw deklaruje sw\u00f3j system projektowy. WordPress odczytuje ten plik i generuje w\u0142a\u015bciwo\u015bci niestandardowe CSS, dzi\u0119ki czemu te same warto\u015bci obowi\u0105zuj\u0105 na froncie i w edytorze, bez utrzymywania dw\u00f3ch arkuszy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">json<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n\t\"$schema\": \"https:\/\/schemas.wp.org\/wp\/6.6\/theme.json\",\n\t\"version\": 3,\n\t\"settings\": {\n\t\t\"appearanceTools\": true,\n\t\t\"layout\": {\n\t\t\t\"contentSize\": \"720px\",\n\t\t\t\"wideSize\": \"1200px\"\n\t\t},\n\t\t\"color\": {\n\t\t\t\"custom\": false,\n\t\t\t\"palette\": &#91;\n\t\t\t\t{ \"slug\": \"base\", \"color\": \"#ffffff\", \"name\": \"Podstawowy\" },\n\t\t\t\t{ \"slug\": \"contrast\", \"color\": \"#111111\", \"name\": \"Kontrastowy\" },\n\t\t\t\t{ \"slug\": \"accent\", \"color\": \"#0b5cff\", \"name\": \"Akcent\" }\n\t\t\t]\n\t\t},\n\t\t\"typography\": {\n\t\t\t\"fluid\": true,\n\t\t\t\"customFontSize\": false\n\t\t}\n\t},\n\t\"styles\": {\n\t\t\"color\": {\n\t\t\t\"background\": \"var(--wp--preset--color--base)\",\n\t\t\t\"text\": \"var(--wp--preset--color--contrast)\"\n\t\t}\n\t}\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Trzy uwagi.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Klucz <code>version<\/code> nie oznacza wersji WordPressa.<\/strong> Wskazuje schemat, wed\u0142ug kt\u00f3rego WordPress interpretuje plik. Wersja 3 wymaga WordPressa 6.6 lub nowszego, wersja 2 jest domy\u015blna od 5.9. Lini\u0119 <code>$schema<\/code> ustaw na minimaln\u0105 wersj\u0119 WordPressa wspieran\u0105 przez motyw, \u017ceby edytor walidowa\u0142 plik wzgl\u0119dem w\u0142a\u015bciwego zestawu funkcji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><code>theme.json<\/code> dzia\u0142a r\u00f3wnie\u017c w motywach klasycznych.<\/strong> Nie musisz przebudowywa\u0107 motywu, \u017ceby z niego skorzysta\u0107. Dodanie pliku daje system projektowy respektowany przez edytor blok\u00f3w, czyli opisane wcze\u015bniej podej\u015bcie hybrydowe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ustawienie <code>custom: false<\/code><\/strong> dla kolor\u00f3w, a analogicznie dla typografii i odst\u0119p\u00f3w, usuwa z edytora dowolne selektory warto\u015bci. To spos\u00f3b na utrzymanie systemu projektowego w ca\u0142o\u015bci, gdy zesp\u00f3\u0142 marketingu zaczyna publikowa\u0107.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Czym jest hierarchia szablon\u00f3w?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hierarchia szablon\u00f3w decyduje o tym, kt\u00f3ry plik obs\u0142u\u017cy dane \u017c\u0105danie. WordPress sprawdza pliki od najbardziej szczeg\u00f3\u0142owego do najbardziej og\u00f3lnego i u\u017cywa pierwszego dopasowania.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dla pojedynczego wpisu kolejno\u015b\u0107 wygl\u0105da tak: <code>single-{typ}-{slug}<\/code>, potem <code>single-{typ}<\/code>, <code>single<\/code>, <code>singular<\/code>, na ko\u0144cu <code>index<\/code>. Ta sama logika obowi\u0105zuje dla archiw\u00f3w, taksonomii, autor\u00f3w i wynik\u00f3w wyszukiwania.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hierarchia jest identyczna w obu architekturach. Zmienia si\u0119 tylko rozszerzenie: <code>single.php<\/code> w motywie klasycznym, <code>templates\/single.html<\/code> w blokowym.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dwa praktyczne wnioski. Po pierwsze, <code>index<\/code> jest zawsze istniej\u0105cym zabezpieczeniem i dlatego to jedyny wymagany szablon. Po drugie, tw\u00f3rz tylko te szablony, w kt\u00f3rych zachowanie faktycznie si\u0119 r\u00f3\u017cni. Dodanie <code>category.php<\/code> identycznego z <code>archive.php<\/code> daje drugi plik do utrzymania i zero korzy\u015bci.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak wy\u015bwietla\u0107 tre\u015b\u0107 dynamiczn\u0105?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">W motywie klasycznym tre\u015b\u0107 renderuje p\u0119tla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php if ( have_posts() ) : ?&gt;\n\n\t&lt;?php while ( have_posts() ) : the_post(); ?&gt;\n\t\t&lt;article &lt;?php post_class(); ?&gt;&gt;\n\t\t\t&lt;h2&gt;\n\t\t\t\t&lt;a href=\"&lt;?php the_permalink(); ?&gt;\"&gt;&lt;?php the_title(); ?&gt;&lt;\/a&gt;\n\t\t\t&lt;\/h2&gt;\n\t\t\t&lt;?php the_excerpt(); ?&gt;\n\t\t&lt;\/article&gt;\n\t&lt;?php endwhile; ?&gt;\n\n\t&lt;?php the_posts_pagination(); ?&gt;\n\n&lt;?php else : ?&gt;\n\n\t&lt;p&gt;&lt;?php esc_html_e( 'Nic nie znaleziono.', 'acme' ); ?&gt;&lt;\/p&gt;\n\n&lt;?php endif; ?&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Znaczniki szablon\u00f3w w rodzaju <code>the_title()<\/code> i <code>the_content()<\/code> wypisuj\u0105 dane bezpo\u015brednio. Ich odpowiedniki z przedrostkiem <code>get_<\/code> zwracaj\u0105 warto\u015b\u0107, co jest potrzebne wtedy, gdy przed wy\u015bwietleniem trzeba j\u0105 przetworzy\u0107.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dla tre\u015bci spoza zapytania g\u0142\u00f3wnego u\u017cyj <code>WP_Query<\/code> i zawsze zresetuj dane po zako\u0144czeniu:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$featured = new WP_Query( array(\n\t'post_type'      =&gt; 'post',\n\t'posts_per_page' =&gt; 3,\n\t'meta_key'       =&gt; '_acme_featured',\n\t'meta_value'     =&gt; '1',\n) );\n\nif ( $featured-&gt;have_posts() ) {\n\twhile ( $featured-&gt;have_posts() ) {\n\t\t$featured-&gt;the_post();\n\t\t\/\/ wyj\u015bcie\n\t}\n\twp_reset_postdata();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">W motywach blokowych wi\u0119kszo\u015b\u0107 tej pracy wykonuje blok p\u0119tli zapytania, a w\u0142asne wyj\u015bcie nale\u017cy do zarejestrowanego bloku albo powi\u0105zania danych, nie do pliku szablonu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Haki to spos\u00f3b na rozszerzanie dzia\u0142ania bez modyfikowania rdzenia i bez walki z w\u0142asnymi szablonami w przysz\u0142o\u015bci. Akcje dok\u0142adaj\u0105 zachowanie w zdefiniowanych punktach, filtry modyfikuj\u0105 warto\u015bci w locie. Jedno i drugie przetrwa aktualizacj\u0119, czego nie da si\u0119 powiedzie\u0107 o zmianach wpisanych na sztywno.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jakie praktyki bezpiecze\u0144stwa maj\u0105 znaczenie?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dwie zasady pokrywaj\u0105 wi\u0119kszo\u015b\u0107 tego, co idzie nie tak w motywach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Zawsze escapuj przy wyj\u015bciu, funkcj\u0105 dopasowan\u0105 do kontekstu.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo esc_html( $title );\necho '&lt;a href=\"' . esc_url( $link ) . '\"&gt;';\nprintf( '&lt;img src=\"%s\" alt=\"%s\"&gt;', esc_url( $src ), esc_attr( $alt ) );\necho wp_kses_post( $rich_text );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sanityzuj i weryfikuj przy wej\u015bciu.<\/strong> Sprawdzaj to, co przychodzi, weryfikuj nonce przy ka\u017cdym formularzu i \u017c\u0105daniu AJAX, a przed wykonaniem dzia\u0142ania sprawdzaj uprawnienia u\u017cytkownika:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if ( ! isset( $_POST&#91;'acme_nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST&#91;'acme_nonce'] ), 'acme_action' ) ) {\n\treturn;\n}\n\nif ( ! current_user_can( 'edit_posts' ) ) {\n\treturn;\n}\n\n$value = sanitize_text_field( wp_unslash( $_POST&#91;'acme_field'] ) );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Do zapyta\u0144 bezpo\u015brednich u\u017cywaj <code>$wpdb-&gt;prepare()<\/code>, a tam gdzie istnieje funkcja z API WordPressa, korzystaj z niej zamiast z w\u0142asnego SQL. Wi\u0119kszo\u015b\u0107 podatno\u015bci w motywach bierze si\u0119 z braku escapowania i pomini\u0119tej kontroli uprawnie\u0144, nie z niczego egzotycznego.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Jak testowa\u0107 i debugowa\u0107 motyw?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">W\u0142\u0105cz debugowanie w <code>wp-config.php<\/code> na \u015brodowisku deweloperskim i nigdy na produkcji:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">php<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>define( 'WP_DEBUG', true );\ndefine( 'WP_DEBUG_LOG', true );\ndefine( 'WP_DEBUG_DISPLAY', false );\ndefine( 'SCRIPT_DEBUG', true );<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Poza tym cztery kontrole wy\u0142apuj\u0105 wi\u0119kszo\u015b\u0107 problem\u00f3w, zanim znajdzie je klient.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Testuj na realistycznej tre\u015bci.<\/strong> Zestaw testowy publikowany przez spo\u0142eczno\u015b\u0107 WordPressa zawiera d\u0142ugie tytu\u0142y, brakuj\u0105ce obrazki wyr\u00f3\u017cniaj\u0105ce, zagnie\u017cd\u017cone listy, nietypowe formaty wpis\u00f3w i niewygodne w\u0105tki komentarzy. Uk\u0142ady wygl\u0105daj\u0105ce dobrze na trzech schludnych wpisach demonstracyjnych rozpadaj\u0105 si\u0119 na prawdziwej tre\u015bci redakcyjnej.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Obserwuj zapytania.<\/strong> Query Monitor pokazuje liczb\u0119 zapyta\u0144, zapytania wolne, wykonanie hak\u00f3w i kolejkowane zasoby przy ka\u017cdym wczytaniu strony. Szablon wykonuj\u0105cy po cichu osiemdziesi\u0105t zapyta\u0144 \u0142atwiej naprawi\u0107 w trakcie prac ni\u017c po wdro\u017ceniu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Uruchom Theme Check<\/strong> pod k\u0105tem standard\u00f3w kodowania i u\u017cycia funkcji wycofanych, a PHP_CodeSniffer ze standardem WordPressa wpnij w sw\u00f3j proces pracy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Testuj dost\u0119pno\u015b\u0107 rzetelnie.<\/strong> Narz\u0119dzia automatyczne wy\u0142api\u0105 kontrast i brakuj\u0105ce etykiety. Nawigacja klawiatur\u0105, kolejno\u015b\u0107 fokusu i zachowanie czytnik\u00f3w ekranu wymagaj\u0105 test\u00f3w r\u0119cznych. To dzi\u015b wym\u00f3g funkcjonalny, nie dopracowanie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Najcz\u0119stsze b\u0142\u0119dy<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wpinanie arkuszy styl\u00f3w i skrypt\u00f3w w szablony zamiast kolejkowania<\/li>\n\n\n\n<li>Pozostawianie zamykaj\u0105cego <code>?><\/code> w plikach PHP<\/li>\n\n\n\n<li>Pomijanie escapowania, bo \u201ewarto\u015b\u0107 pochodzi z naszej w\u0142asnej bazy&#8221;<\/li>\n\n\n\n<li>Tworzenie szablon\u00f3w, kt\u00f3re powielaj\u0105 zabezpieczenie, niczego nie zmieniaj\u0105c<\/li>\n\n\n\n<li>Budowanie motywu bez <code>theme.json<\/code>, a potem walka z domy\u015blnymi ustawieniami edytora blok\u00f3w w CSS<\/li>\n\n\n\n<li>Edytowanie cudzego motywu bezpo\u015brednio zamiast przez motyw potomny<\/li>\n\n\n\n<li>Traktowanie dost\u0119pno\u015bci i wydajno\u015bci jako etapu po zatwierdzeniu projektu graficznego<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Jakie pliki s\u0105 wymagane do stworzenia motywu WordPress?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Motyw klasyczny wymaga <code>style.css<\/code> i <code>index.php<\/code>. Motyw blokowy wymaga <code>style.css<\/code> i <code>templates\/index.html<\/code>. W obu przypadkach <code>functions.php<\/code> i <code>theme.json<\/code> s\u0105 zdecydowanie zalecane przy czymkolwiek poza demonstracj\u0105.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Czy functions.php wymaga otwieraj\u0105cego znacznika PHP?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tak. Otwieraj\u0105cy <code>&lt;?php<\/code> jest wymagany. Konwencja m\u00f3wi natomiast o pomini\u0119ciu zamykaj\u0105cego <code>?&gt;<\/code> na ko\u0144cu pliku, poniewa\u017c znaki puste po nim mog\u0105 wys\u0142a\u0107 wyj\u015bcie przed nag\u0142\u00f3wkami i zepsu\u0107 serwis.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Motyw blokowy czy klasyczny?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Blokowy, gdy redakcja potrzebuje realnej kontroli nad uk\u0142adem i szablonami. Klasyczny lub hybrydowy, gdy szablony zawieraj\u0105 rozbudowan\u0105 logik\u0119, gdy potrzebujesz \u015bcis\u0142ej kontroli nad \u0142adowanymi zasobami albo gdy za\u0142o\u017ceniem jest celowo ograniczony zakres edycji. Motyw klasyczny z <code>theme.json<\/code> to rozs\u0105dne rozwi\u0105zanie po\u015brednie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Czy mog\u0119 doda\u0107 theme.json do istniej\u0105cego motywu klasycznego?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tak i zwykle warto. Plik daje system projektowy respektowany przez edytor blok\u00f3w, bez przenoszenia szablon\u00f3w do edytora witryny i bez przebudowy czegokolwiek.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Czy potrzebuj\u0119 motywu potomnego?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Tylko wtedy, gdy rozszerzasz motyw, kt\u00f3rego nie kontrolujesz. Przy w\u0142asnym motywie potomny dok\u0142ada warstw\u0119, nie dok\u0142adaj\u0105c niczego wi\u0119cej. Przy modyfikacji cudzego motywu to on chroni Twoj\u0105 prac\u0119 przed nast\u0119pn\u0105 aktualizacj\u0105.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ile trwa zbudowanie w\u0142asnego motywu?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Przy prostym serwisie wizerunkowym z gotowym projektem graficznym kilka dni. Przy platformie z w\u0142asnymi typami tre\u015bci, z\u0142o\u017conymi szablonami i integracjami tygodnie lub miesi\u0105ce. Zmienn\u0105 rzadko jest sama warstwa motywu. S\u0105 ni\u0105 model tre\u015bci, integracje i liczba odr\u0119bnych typ\u00f3w podstron.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Budujesz co\u015b, w czym warstwa motywu jest najmniejsz\u0105 cz\u0119\u015bci\u0105 problemu? Zaczynamy od modelu tre\u015bci i architektury. \u2192 <a href=\"https:\/\/wlc.team\/pl\/kontakt\/\">Porozmawiajmy<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W\u0142asny motyw WordPress oznacza zbudowanie warstwy prezentacji samodzielnie, zamiast dostosowywania cudzej. W 2026 roku ta decyzja zaczyna si\u0119 od drugiej: czy budujesz motyw blokowy, klasyczny, czy hybryd\u0119 obu. Odpowied\u017a zmienia to, jakich plik\u00f3w potrzebujesz, gdzie mieszka warstwa styl\u00f3w i jak\u0105 kontrol\u0119 dostaj\u0105 redaktorzy. Ten przewodnik opisuje obie \u015bcie\u017cki, wymagane pliki, hierarchi\u0119 szablon\u00f3w oraz praktyki bezpiecze\u0144stwa [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":2802,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"wlc_update_modified":false,"wlc_modified_date":"","footnotes":""},"categories":[10],"tags":[],"class_list":["post-2803","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bez-kategorii"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Jak stworzy\u0107 w\u0142asny motyw WordPress? - WLC<\/title>\n<meta name=\"description\" content=\"W\u0142asny motyw WordPress krok po kroku: motywy blokowe i theme.json, szablony klasyczne, wymagane pliki, hierarchia szablon\u00f3w, bezpiecze\u0144stwo i testy.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Jak stworzy\u0107 w\u0142asny motyw WordPress? - WLC\" \/>\n<meta property=\"og:description\" content=\"W\u0142asny motyw WordPress krok po kroku: motywy blokowe i theme.json, szablony klasyczne, wymagane pliki, hierarchia szablon\u00f3w, bezpiecze\u0144stwo i testy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"WLC\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-30T04:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wlc.team\/app\/uploads\/2025\/07\/How-to-develop-a-custom-theme-in-WordPress.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"520\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Pawe\u0142 Zmys\u0142owski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Pawe\u0142 Zmys\u0142owski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/\"},\"author\":{\"name\":\"Pawe\u0142 Zmys\u0142owski\",\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/#\\\/schema\\\/person\\\/c2bcfdeef992bd8742ca5b346bc40dcc\"},\"headline\":\"Jak stworzy\u0107 w\u0142asny motyw WordPress?\",\"datePublished\":\"2025-07-30T04:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/\"},\"wordCount\":1534,\"publisher\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wlc.team\\\/app\\\/uploads\\\/2025\\\/07\\\/How-to-develop-a-custom-theme-in-WordPress.png\",\"inLanguage\":\"pl-PL\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/\",\"url\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/\",\"name\":\"Jak stworzy\u0107 w\u0142asny motyw WordPress? - WLC\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wlc.team\\\/app\\\/uploads\\\/2025\\\/07\\\/How-to-develop-a-custom-theme-in-WordPress.png\",\"datePublished\":\"2025-07-30T04:00:00+00:00\",\"description\":\"W\u0142asny motyw WordPress krok po kroku: motywy blokowe i theme.json, szablony klasyczne, wymagane pliki, hierarchia szablon\u00f3w, bezpiecze\u0144stwo i testy.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/#primaryimage\",\"url\":\"https:\\\/\\\/wlc.team\\\/app\\\/uploads\\\/2025\\\/07\\\/How-to-develop-a-custom-theme-in-WordPress.png\",\"contentUrl\":\"https:\\\/\\\/wlc.team\\\/app\\\/uploads\\\/2025\\\/07\\\/How-to-develop-a-custom-theme-in-WordPress.png\",\"width\":1280,\"height\":520,\"caption\":\"How to develop a custom theme in WordPress\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/blog\\\/jak-stworzyc-wlasny-motyw-wordpress\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wlc.team\\\/pl\\\/agencja-wordpress-development-wlc\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Jak stworzy\u0107 w\u0142asny motyw WordPress?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/#website\",\"url\":\"https:\\\/\\\/wlc.team\\\/pl\\\/\",\"name\":\"WLC\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wlc.team\\\/pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/#organization\",\"name\":\"WLC\",\"url\":\"https:\\\/\\\/wlc.team\\\/pl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wlc.team\\\/app\\\/uploads\\\/2026\\\/05\\\/logo-WLC.svg\",\"contentUrl\":\"https:\\\/\\\/wlc.team\\\/app\\\/uploads\\\/2026\\\/05\\\/logo-WLC.svg\",\"caption\":\"WLC\"},\"image\":{\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wlc.team\\\/pl\\\/#\\\/schema\\\/person\\\/c2bcfdeef992bd8742ca5b346bc40dcc\",\"name\":\"Pawe\u0142 Zmys\u0142owski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6ee44112f45966811b27bcb16cea8224ce2e414b42387f5bd64f10cd729b310c?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6ee44112f45966811b27bcb16cea8224ce2e414b42387f5bd64f10cd729b310c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6ee44112f45966811b27bcb16cea8224ce2e414b42387f5bd64f10cd729b310c?s=96&d=mm&r=g\",\"caption\":\"Pawe\u0142 Zmys\u0142owski\"},\"description\":\"Started his career as a founder of a local ISP company during his student times, next became a founder and president of one of the leading Polish online photo laboratories delivering photo prints, highly recognized in the professional photographers community due to the focus on the highest quality of services and customer care. At White Label Coders responsible for the sales process and sales team, still involved in the analytical and advisory roles in case of more complex projects.\",\"url\":\"https:\\\/\\\/wlc.team\\\/pl\\\/author\\\/pawel-zmyslowski\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Jak stworzy\u0107 w\u0142asny motyw WordPress? - WLC","description":"W\u0142asny motyw WordPress krok po kroku: motywy blokowe i theme.json, szablony klasyczne, wymagane pliki, hierarchia szablon\u00f3w, bezpiecze\u0144stwo i testy.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/","og_locale":"pl_PL","og_type":"article","og_title":"Jak stworzy\u0107 w\u0142asny motyw WordPress? - WLC","og_description":"W\u0142asny motyw WordPress krok po kroku: motywy blokowe i theme.json, szablony klasyczne, wymagane pliki, hierarchia szablon\u00f3w, bezpiecze\u0144stwo i testy.","og_url":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/","og_site_name":"WLC","article_published_time":"2025-07-30T04:00:00+00:00","og_image":[{"width":1280,"height":520,"url":"https:\/\/wlc.team\/app\/uploads\/2025\/07\/How-to-develop-a-custom-theme-in-WordPress.png","type":"image\/png"}],"author":"Pawe\u0142 Zmys\u0142owski","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Pawe\u0142 Zmys\u0142owski","Est. reading time":"6 minut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/#article","isPartOf":{"@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/"},"author":{"name":"Pawe\u0142 Zmys\u0142owski","@id":"https:\/\/wlc.team\/pl\/#\/schema\/person\/c2bcfdeef992bd8742ca5b346bc40dcc"},"headline":"Jak stworzy\u0107 w\u0142asny motyw WordPress?","datePublished":"2025-07-30T04:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/"},"wordCount":1534,"publisher":{"@id":"https:\/\/wlc.team\/pl\/#organization"},"image":{"@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/wlc.team\/app\/uploads\/2025\/07\/How-to-develop-a-custom-theme-in-WordPress.png","inLanguage":"pl-PL"},{"@type":"WebPage","@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/","url":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/","name":"Jak stworzy\u0107 w\u0142asny motyw WordPress? - WLC","isPartOf":{"@id":"https:\/\/wlc.team\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/#primaryimage"},"image":{"@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/#primaryimage"},"thumbnailUrl":"https:\/\/wlc.team\/app\/uploads\/2025\/07\/How-to-develop-a-custom-theme-in-WordPress.png","datePublished":"2025-07-30T04:00:00+00:00","description":"W\u0142asny motyw WordPress krok po kroku: motywy blokowe i theme.json, szablony klasyczne, wymagane pliki, hierarchia szablon\u00f3w, bezpiecze\u0144stwo i testy.","breadcrumb":{"@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/#primaryimage","url":"https:\/\/wlc.team\/app\/uploads\/2025\/07\/How-to-develop-a-custom-theme-in-WordPress.png","contentUrl":"https:\/\/wlc.team\/app\/uploads\/2025\/07\/How-to-develop-a-custom-theme-in-WordPress.png","width":1280,"height":520,"caption":"How to develop a custom theme in WordPress"},{"@type":"BreadcrumbList","@id":"https:\/\/wlc.team\/pl\/blog\/jak-stworzyc-wlasny-motyw-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wlc.team\/pl\/agencja-wordpress-development-wlc\/"},{"@type":"ListItem","position":2,"name":"Jak stworzy\u0107 w\u0142asny motyw WordPress?"}]},{"@type":"WebSite","@id":"https:\/\/wlc.team\/pl\/#website","url":"https:\/\/wlc.team\/pl\/","name":"WLC","description":"","publisher":{"@id":"https:\/\/wlc.team\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wlc.team\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/wlc.team\/pl\/#organization","name":"WLC","url":"https:\/\/wlc.team\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/wlc.team\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/wlc.team\/app\/uploads\/2026\/05\/logo-WLC.svg","contentUrl":"https:\/\/wlc.team\/app\/uploads\/2026\/05\/logo-WLC.svg","caption":"WLC"},"image":{"@id":"https:\/\/wlc.team\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/wlc.team\/pl\/#\/schema\/person\/c2bcfdeef992bd8742ca5b346bc40dcc","name":"Pawe\u0142 Zmys\u0142owski","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/secure.gravatar.com\/avatar\/6ee44112f45966811b27bcb16cea8224ce2e414b42387f5bd64f10cd729b310c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6ee44112f45966811b27bcb16cea8224ce2e414b42387f5bd64f10cd729b310c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6ee44112f45966811b27bcb16cea8224ce2e414b42387f5bd64f10cd729b310c?s=96&d=mm&r=g","caption":"Pawe\u0142 Zmys\u0142owski"},"description":"Started his career as a founder of a local ISP company during his student times, next became a founder and president of one of the leading Polish online photo laboratories delivering photo prints, highly recognized in the professional photographers community due to the focus on the highest quality of services and customer care. At White Label Coders responsible for the sales process and sales team, still involved in the analytical and advisory roles in case of more complex projects.","url":"https:\/\/wlc.team\/pl\/author\/pawel-zmyslowski\/"}]}},"_links":{"self":[{"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/posts\/2803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/comments?post=2803"}],"version-history":[{"count":2,"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/posts\/2803\/revisions"}],"predecessor-version":[{"id":2805,"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/posts\/2803\/revisions\/2805"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/media\/2802"}],"wp:attachment":[{"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/media?parent=2803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/categories?post=2803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wlc.team\/pl\/wp-json\/wp\/v2\/tags?post=2803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}