{"id":20862,"date":"2026-10-10T19:12:00","date_gmt":"2026-10-10T17:12:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=20862"},"modified":"2026-10-09T22:29:14","modified_gmt":"2026-10-09T20:29:14","slug":"readme-naglowek-wtyczki-svn","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/","title":{"rendered":"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org"},"content":{"rendered":"<p>Wtyczk\u0119 w katalogu WordPress.org opisuj\u0105 dwa \u017ar\u00f3d\u0142a tekstowe, kt\u00f3re odpowiadaj\u0105 na r\u00f3\u017cne pytania. Komentarz nag\u0142\u00f3wkowy na pocz\u0105tku g\u0142\u00f3wnego pliku PHP czyta sam WordPress i katalog, a plik <code>readme.txt<\/code> czyta wy\u0142\u0105cznie katalog. Kt\u00f3re z tych \u017ar\u00f3de\u0142 jest rozstrzygaj\u0105ce, nie jest oczywiste: przycisk pobierania pokazuje wersj\u0119 z nag\u0142\u00f3wka, jednozdaniowy opis pod nazw\u0105 wtyczki pochodzi z readme, a pole \u201eRequires at least\u201d mo\u017ce wyst\u0119powa\u0107 w obu plikach. Do tego repozytorium SVN decyduje, kt\u00f3ra kopia readme w og\u00f3le zostanie odczytana.<\/p>\n<p>Artyku\u0142 omawia oba pliki na kompletnych przyk\u0142adach, na podstawie kodu importu katalogu wyja\u015bnia, kt\u00f3re pole wygrywa przy sprzeczno\u015bci, opisuje uk\u0142ad <code>trunk\/<\/code>, <code>tags\/<\/code> i <code>assets\/<\/code> wraz z pe\u0142n\u0105 sekwencj\u0105 polece\u0144 oraz zestawia b\u0142\u0119dy zg\u0142aszane przez walidator readme i importer. <a href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/wytyczne-katalogu-wtyczek\/\">Przegl\u0105d wtyczek<\/a> i <a href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/tutorials-pl-wordpress-plugins-tricks-pl\/plugin-check-lokalnie-i-w-ci\/\">Plugin Check<\/a> to tematy osobnych artyku\u0142\u00f3w tej serii.<\/p>\n<h2>Nag\u0142\u00f3wek wtyczki w pliku g\u0142\u00f3wnym<\/h2>\n<p>WordPress rozpoznaje wtyczk\u0119 po bloku komentarza, kt\u00f3ry zawiera co najmniej wiersz <code>Plugin Name:<\/code>. Pozosta\u0142e pola s\u0105 opcjonalne, ale kilka z nich analizuje katalog. Podczas importu wydania przeszukuje on pliki PHP w katalogu g\u0142\u00f3wnym opublikowanego folderu i bierze pierwszy plik, kt\u00f3rego nag\u0142\u00f3wek zawiera nazw\u0119 wtyczki. Dlatego podr\u0119cznik wtyczek wymaga, by plik g\u0142\u00f3wny le\u017ca\u0142 bezpo\u015brednio w <code>trunk\/<\/code>: \u015bcie\u017cka w rodzaju <code>trunk\/my-plugin\/my-plugin.php<\/code> psuje pobieranie. Podfoldery na do\u0142\u0105czane pliki nie stanowi\u0105 problemu.<\/p>\n<p>Poni\u017cszy plik g\u0142\u00f3wny jest kompletny i da si\u0119 go od razu aktywowa\u0107. Nale\u017cy do ma\u0142ej przyk\u0142adowej wtyczki \u201eLW Reading Time\u201d, kt\u00f3ra towarzyszy ca\u0142emu artyku\u0142owi:<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name:       LW Reading Time\n * Plugin URI:        https:\/\/lukaswojcik.com\/plugins\/lw-reading-time\/\n * Description:       Shows the estimated reading time above single posts.\n * Version:           1.2.0\n * Requires at least: 6.5\n * Requires PHP:      7.4\n * Author:            Lukas Wojcik\n * Author URI:        https:\/\/lukaswojcik.com\/\n * License:           GPLv2 or later\n * License URI:       https:\/\/www.gnu.org\/licenses\/gpl-2.0.html\n * Text Domain:       lw-reading-time\n *\n * @package LW_Reading_Time\n *\/\n\nif ( ! defined( 'ABSPATH' ) ) {\n\texit;\n}\n\n\/**\n * Prepends the estimated reading time to the content of single posts.\n *\n * @param string $content Post content.\n * @return string Filtered content.\n *\/\nfunction lw_reading_time_prepend( $content ) {\n\tif ( ! is_singular( 'post' ) || ! in_the_loop() || ! is_main_query() ) {\n\t\treturn $content;\n\t}\n\n\t$words   = str_word_count( wp_strip_all_tags( $content ) );\n\t$minutes = max( 1, (int) ceil( $words \/ 200 ) );\n\n\t$label = sprintf(\n\t\t\/* translators: %d: number of minutes. *\/\n\t\t_n( '%d minute read', '%d minutes read', $minutes, 'lw-reading-time' ),\n\t\t$minutes\n\t);\n\n\treturn '&lt;p class=\"lw-reading-time\"&gt;' . esc_html( $label ) . '&lt;\/p&gt;' . $content;\n}\nadd_filter( 'the_content', 'lw_reading_time_prepend' );<\/code><\/pre>\n<p>Kilka p\u00f3l zas\u0142uguje na bli\u017csze spojrzenie:<\/p>\n<ul>\n<li><strong>Version<\/strong> jest por\u00f3wnywane funkcj\u0105 PHP <code>version_compare()<\/code>, wi\u0119c <code>1.02<\/code> jest \u201ewi\u0119ksze\u201d ni\u017c <code>1.1<\/code>. Importer ostrzega przed wszystkim poza cyframi, kropkami i opcjonalnym przyrostkiem <code>-rc<\/code>, <code>-beta<\/code> lub <code>-alpha<\/code>, a wersje, kt\u00f3re by\u0142yby niebezpieczne jako \u015bcie\u017cka folderu, odrzuca.<\/li>\n<li><strong>Requires at least<\/strong> i <strong>Requires PHP<\/strong> to wymagania dotycz\u0105ce wersji, kt\u00f3re sam WordPress sprawdza przy aktywacji; od WordPressa 6.5 sprawdza te\u017c <strong>Requires Plugins<\/strong>. Od WordPressa 5.8 readme nie jest ju\u017c do tego analizowane; funkcja <code>validate_plugin_requirements()<\/code> w rdzeniu czyta wy\u0142\u0105cznie nag\u0142\u00f3wek przez <code>get_plugin_data()<\/code>.<\/li>\n<li><strong>Description<\/strong> pojawia si\u0119 na li\u015bcie wtyczek w panelu (wed\u0142ug podr\u0119cznika poni\u017cej 140 znak\u00f3w); w katalogu s\u0142u\u017cy tylko jako warto\u015b\u0107 zast\u0119pcza.<\/li>\n<li><strong>Requires Plugins<\/strong> (od WordPressa 6.5) przyjmuje rozdzielon\u0105 przecinkami list\u0119 slug\u00f3w z katalogu, np. <code>woocommerce<\/code>, a nie \u015bcie\u017cki typu <code>my-plugin\/my-plugin.php<\/code>. Wtyczki hostowane na WordPress.org mog\u0105 zale\u017ce\u0107 tylko od wtyczek r\u00f3wnie\u017c tam hostowanych. Je\u015bli sluga nie da si\u0119 przypisa\u0107 do opublikowanej wtyczki, importer przerywa wydanie.<\/li>\n<li><strong>Update URI<\/strong> nie nale\u017cy do wtyczki z katalogu. Importer akceptuje to pole tylko wtedy, gdy wskazuje w\u0142asny adres <code>wordpress.org\/plugins\/&lt;slug&gt;<\/code>, a w innym przypadku przerywa import.<\/li>\n<li><strong>Text Domain<\/strong> odpowiada slugowi; t\u0142umaczenia to temat <span class=\"lw-artikel-geplant\">osobnego artyku\u0142u tej serii<\/span>.<\/li>\n<\/ul>\n<h2>Plik readme.txt: pola nag\u0142\u00f3wka, kr\u00f3tki opis, sekcje<\/h2>\n<p>Readme korzysta z dostosowanej odmiany Markdown z nag\u0142\u00f3wkami w <code>==<\/code>. Kompletne readme przyk\u0142adowej wtyczki wygl\u0105da tak:<\/p>\n<pre><code>=== LW Reading Time ===\nContributors: lukaswojcik\nTags: reading time, posts, content\nRequires at least: 6.5\nTested up to: 7.1\nRequires PHP: 7.4\nStable tag: 1.2.0\nLicense: GPLv2 or later\nLicense URI: https:\/\/www.gnu.org\/licenses\/gpl-2.0.html\n\nShows the estimated reading time above single posts, based on the word count of the post content.\n\n== Description ==\n\nLW Reading Time counts the words of a post and shows the estimated reading time above the content of single posts.\n\n* No settings page, no database tables.\n* The output is a single paragraph with the class `lw-reading-time`.\n* Translations are managed on translate.wordpress.org.\n\n== Installation ==\n\n1. Install the plugin via Plugins &gt; Add New, or upload the folder `lw-reading-time` to `\/wp-content\/plugins\/`.\n2. Activate the plugin.\n3. Open any single post; the reading time appears above the content.\n\n== Frequently Asked Questions ==\n\n= How is the reading time calculated? =\n\nThe word count of the post content is divided by 200 and rounded up to full minutes.\n\n= Does the plugin change pages? =\n\nNo. Only single posts of the post type `post` are changed.\n\n== Screenshots ==\n\n1. Reading time above a single post.\n2. The same post with the Polish translation active.\n\n== Changelog ==\n\n= 1.2.0 =\n* Plural forms for the reading time label.\n* WordPress 6.5 or later is required.\n\n= 1.1.0 =\n* Output limited to the main query.\n\n== Upgrade Notice ==\n\n= 1.2.0 =\nAdds plural forms. WordPress 6.5 or later is now required.<\/code><\/pre>\n<h3>Pola nag\u0142\u00f3wka<\/h3>\n<ul>\n<li><strong>Contributors<\/strong> musi zawiera\u0107 nazwy u\u017cytkownik\u00f3w WordPress.org. Parser usuwa pocz\u0105tkowe <code>@<\/code>, szuka ka\u017cdego wpisu najpierw jako loginu, a potem jako sluga profilu, i z ostrze\u017ceniem odrzuca to, czego nie znajdzie. Podr\u0119cznik okre\u015bla t\u0119 list\u0119 jako wra\u017cliw\u0105 na wielko\u015b\u0107 liter.<\/li>\n<li><strong>Tags<\/strong> przyjmuje najwy\u017cej pi\u0119\u0107 poj\u0119\u0107, reszta jest pomijana z ostrze\u017ceniem. Tagi <code>plugin<\/code> i <code>wordpress<\/code> znikaj\u0105 ca\u0142kowicie, a walidator odnotowuje tagi u\u017cywane przez mniej ni\u017c pi\u0119\u0107 wtyczek. Nazwy konkurencyjnych wtyczek jako tagi s\u0105 wed\u0142ug podr\u0119cznika niedozwolone.<\/li>\n<li><strong>Tested up to<\/strong> powinno zawiera\u0107 wy\u0142\u0105cznie liczby, np. <code>7.1<\/code>. Katalog ignoruje wersje poprawkowe i sam dopisuje aktualn\u0105; dlatego strona Plugin Check pokazuje obecnie \u201eTested up to 7.0.6\u201d. Warto\u015bci wy\u017csze o wi\u0119cej ni\u017c jedn\u0105 wersj\u0119 g\u0142\u00f3wn\u0105 od bie\u017c\u0105cej ga\u0142\u0119zi stabilnej parser odrzuca: przy WordPressie 7.1.2 jako aktualnym wydaniu w dniu 29.09.2026 <code>7.2<\/code> zostanie przyj\u0119te, a <code>7.3<\/code> ju\u017c nie.<\/li>\n<li><strong>Requires PHP<\/strong> musi mie\u0107 posta\u0107 <code>x.y<\/code> lub <code>x.y.z<\/code>, w przeciwnym razie warto\u015b\u0107 jest ignorowana z ostrze\u017ceniem.<\/li>\n<li><strong>License<\/strong> jest por\u00f3wnywane z listami s\u0142\u00f3w kluczowych. Okre\u015blenia takie jak \u201eNonCommercial\u201d czy \u201eproprietary\u201d daj\u0105 w walidatorze b\u0142\u0105d, nieznana licencja tylko uwag\u0119.<\/li>\n<li><strong>Stable tag<\/strong> steruje ca\u0142ym mechanizmem SVN i ma poni\u017cej w\u0142asn\u0105 sekcj\u0119.<\/li>\n<\/ul>\n<h3>Kr\u00f3tki opis i sekcje<\/h3>\n<p>Tekst po polach nag\u0142\u00f3wka a\u017c do pierwszego nag\u0142\u00f3wka sekcji to kr\u00f3tki opis, czyli wiersz tu\u017c pod nazw\u0105 wtyczki; kilka wierszy lub akapit\u00f3w parser \u0142\u0105czy w jeden. Parser dopuszcza 150 znak\u00f3w liczonych po usuni\u0119ciu Markdown i HTML. D\u0142u\u017cszy tekst zostaje uci\u0119ty na kropce w ostatniej jednej pi\u0105tej limitu, a je\u015bli jej brak, z wielokropkiem; walidator zg\u0142asza wtedy ostrze\u017cenie. Gdy wiersza brakuje, jego miejsce zajmuje pierwszy wiersz opisu.<\/p>\n<p>Oczekiwane sekcje to Description, Installation, Frequently Asked Questions, Screenshots, Changelog i Upgrade Notice. Nieznane sekcje nie przepadaj\u0105, lecz trafiaj\u0105 na koniec opisu ze swoim tytu\u0142em jako \u015br\u00f3dtytu\u0142em. Ka\u017cda sekcja jest ograniczona do 2500 s\u0142\u00f3w, FAQ i changelog do 5000; d\u0142u\u017cszy tekst zostaje skr\u00f3cony. Wpisy FAQ w formie <code>= Pytanie =<\/code> staj\u0105 si\u0119 na stronie wtyczki list\u0105 definicji, a numerowane wiersze pod Screenshots zamieniaj\u0105 si\u0119 w podpisy plik\u00f3w <code>screenshot-1<\/code>, <code>screenshot-2<\/code> i kolejnych. Podr\u0119cznik ostrzega, \u017ce pliki readme wi\u0119ksze ni\u017c 10 kB mog\u0105 powodowa\u0107 b\u0142\u0119dy, i zaleca przeniesienie starszych wpis\u00f3w changelogu do osobnego pliku <code>changelog.txt<\/code>.<\/p>\n<p>Upgrade Notice nie jest zak\u0142adk\u0105 na stronie wtyczki. Importer zapisuje t\u0119 sekcj\u0119 osobno, API katalogu j\u0105 dostarcza, a WordPress wy\u015bwietla j\u0105 jako zwyk\u0142y tekst na ekranie Kokpit \u2192 Aktualizacje obok oczekuj\u0105cej aktualizacji. Oficjalne przyk\u0142adowe readme zaleca najwy\u017cej 300 znak\u00f3w; parser tego limitu nie egzekwuje.<\/p>\n<h2>Kt\u00f3ra warto\u015b\u0107 wygrywa, gdy nag\u0142\u00f3wek i readme si\u0119 r\u00f3\u017cni\u0105<\/h2>\n<p>Podr\u0119cznik m\u00f3wi tylko og\u00f3lnie, \u017ce wersja pochodzi z pliku g\u0142\u00f3wnego, a reszta z readme. Kod importu katalogu jest dok\u0142adniejszy. Tabela zestawia jego zachowanie wed\u0142ug stanu na 29.09.2026:<\/p>\n<table>\n<thead>\n<tr>\n<th>Element strony wtyczki<\/th>\n<th>Wygrywaj\u0105ca warto\u015b\u0107<\/th>\n<th>Warto\u015b\u0107 zast\u0119pcza<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Nazwa wtyczki (tytu\u0142 strony)<\/td>\n<td>Wiersz tytu\u0142owy readme <code>=== \u2026 ===<\/code>, o ile nie jest r\u00f3wny slugowi<\/td>\n<td>Nag\u0142\u00f3wek <code>Plugin Name<\/code><\/td>\n<\/tr>\n<tr>\n<td>Wiersz pod nazw\u0105<\/td>\n<td>Kr\u00f3tki opis z readme<\/td>\n<td>Nag\u0142\u00f3wek <code>Description<\/code><\/td>\n<\/tr>\n<tr>\n<td>Wersja, przycisk pobierania<\/td>\n<td>Nag\u0142\u00f3wek <code>Version<\/code><\/td>\n<td>brak<\/td>\n<\/tr>\n<tr>\n<td>\u201eWordPress version \u2026 or higher\u201d<\/td>\n<td>Nag\u0142\u00f3wek <code>Requires at least<\/code>, je\u015bli poprawnie sformatowany<\/td>\n<td>Readme<\/td>\n<\/tr>\n<tr>\n<td>\u201ePHP version \u2026 or higher\u201d<\/td>\n<td>Nag\u0142\u00f3wek <code>Requires PHP<\/code>, je\u015bli poprawnie sformatowany<\/td>\n<td>Readme<\/td>\n<\/tr>\n<tr>\n<td>\u201eTested up to\u201d<\/td>\n<td>Nag\u0142\u00f3wek <code>Tested up to<\/code>, je\u015bli istnieje i jest poprawnie sformatowany<\/td>\n<td>Readme<\/td>\n<\/tr>\n<tr>\n<td>Tagi, Contributors, link do darowizn<\/td>\n<td>Readme<\/td>\n<td>brak<\/td>\n<\/tr>\n<tr>\n<td>Strona wtyczki i autora<\/td>\n<td>Nag\u0142\u00f3wek <code>Plugin URI<\/code>, <code>Author URI<\/code><\/td>\n<td>brak<\/td>\n<\/tr>\n<tr>\n<td>Udost\u0119pniany kod<\/td>\n<td><code>Stable tag<\/code> w <code>trunk\/readme.txt<\/code><\/td>\n<td><code>trunk\/<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u201ePoprawnie sformatowany\u201d oznacza co najmniej trzy znaki z\u0142o\u017cone z cyfr i kropek. Wiersz \u201eTested up to\u201d \u0142atwo przeoczy\u0107: importer rejestruje <code>Tested up to<\/code> jako dodatkowe pole nag\u0142\u00f3wka pliku g\u0142\u00f3wnego, wi\u0119c warto\u015b\u0107 w nim zapisana nadpisuje readme, a Plugin Check zg\u0142asza rozbie\u017cno\u015b\u0107 mi\u0119dzy nimi. Poniewa\u017c rdze\u0144 czyta wymagania wy\u0142\u0105cznie z nag\u0142\u00f3wka, warto\u015bci wymaga\u0144 warto utrzymywa\u0107 identyczne w obu plikach.<\/p>\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/wp-readme-svn-pl.png?v=20260930\" width=\"1120\" height=\"580\" alt=\"Kt\u00f3ry plik zasila kt\u00f3r\u0105 cz\u0119\u015b\u0107 strony wtyczki na WordPress.org\"><figcaption>Readme w trunk wskazuje tylko Stable tag; folder tagu, nag\u0142\u00f3wek i assets\/ wype\u0142niaj\u0105 stron\u0119<\/figcaption><\/figure>\n<h2>Uk\u0142ad SVN: trunk, tags i assets<\/h2>\n<p>Po zatwierdzeniu ka\u017cda wtyczka dostaje repozytorium pod adresem <code>https:\/\/plugins.svn.wordpress.org\/&lt;slug&gt;<\/code> z trzema folderami: <code>trunk\/<\/code> na bie\u017c\u0105cy kod, <code>tags\/<\/code> na wydania i <code>assets\/<\/code> na grafiki oraz blueprint. Folder <code>branches\/<\/code> nie jest ju\u017c tworzony. Podr\u0119cznik traktuje SVN jako repozytorium wyda\u0144: ka\u017cdy commit od nowa buduje pliki ZIP wszystkich wersji, co jest jednym z powod\u00f3w, dla kt\u00f3rych zmiany mog\u0105 pojawia\u0107 si\u0119 nawet po sze\u015bciu godzinach.<\/p>\n<h3>Jak Stable tag wybiera kod<\/h3>\n<p>Import zaczyna si\u0119 od <code>trunk\/readme.txt<\/code> i odczytuje z niego tylko jeden wiersz: <code>Stable tag<\/code>. Przy <code>Stable tag: 1.2.0<\/code> katalog szuka folderu <code>tags\/1.2.0\/<\/code>. Je\u015bli folder istnieje i zawiera pliki, wszystko inne pochodzi stamt\u0105d: wy\u015bwietlane readme, nag\u0142\u00f3wek wtyczki i plik ZIP dla u\u017cytkownik\u00f3w. Zmiany opisu w <code>trunk\/readme.txt<\/code> nie maj\u0105 wp\u0142ywu na stron\u0119, dop\u00f3ki tag istnieje. R\u00f3wnie\u017c readme wewn\u0105trz tagu musi zawiera\u0107 poprawny Stable tag; w przeciwnym razie, wed\u0142ug podr\u0119cznika, wtyczka mo\u017ce przesta\u0107 si\u0119 aktualizowa\u0107.<\/p>\n<p>Nazwa folderu wybiera kod, ale nie ustala wersji. Wersja na przycisku pobierania pochodzi z nag\u0142\u00f3wka <code>Version<\/code> w otagowanym pliku g\u0142\u00f3wnym. Je\u015bli w <code>tags\/1.4\/<\/code> nadal widnieje <code>Version: 1.3<\/code>, strona pokazuje 1.3, a importer zg\u0142asza niezgodno\u015b\u0107 nag\u0142\u00f3wka z tagiem. Cudzys\u0142owy wok\u00f3\u0142 warto\u015bci Stable tag i przedrostek <code>tags\/<\/code> parser usuwa.<\/p>\n<h3>Assets: nazwy, rozmiary i blueprint<\/h3>\n<p>Wszystko w <code>assets\/<\/code> dotyczy wszystkich wersji i nie trafia do pliku ZIP. Grafiki w <code>trunk\/assets\/<\/code> albo <code>tags\/1.0\/assets\/<\/code> nie s\u0105 u\u017cywane. Nazwy plik\u00f3w s\u0105 sta\u0142e:<\/p>\n<table>\n<thead>\n<tr>\n<th>Przeznaczenie<\/th>\n<th>Nazwa pliku<\/th>\n<th>Maksymalny rozmiar<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Baner<\/td>\n<td><code>banner-772x250.png<\/code> lub <code>.jpg<\/code><\/td>\n<td>4 MB<\/td>\n<\/tr>\n<tr>\n<td>Baner, wysoka rozdzielczo\u015b\u0107<\/td>\n<td><code>banner-1544x500.png<\/code> lub <code>.jpg<\/code><\/td>\n<td>4 MB<\/td>\n<\/tr>\n<tr>\n<td>Ikona<\/td>\n<td><code>icon-128x128.png<\/code>, <code>.jpg<\/code> lub <code>.gif<\/code><\/td>\n<td>1 MB<\/td>\n<\/tr>\n<tr>\n<td>Ikona, wysoka rozdzielczo\u015b\u0107<\/td>\n<td><code>icon-256x256.png<\/code>, <code>.jpg<\/code> lub <code>.gif<\/code><\/td>\n<td>1 MB<\/td>\n<\/tr>\n<tr>\n<td>Ikona wektorowa<\/td>\n<td><code>icon.svg<\/code> oraz PNG jako zapas<\/td>\n<td>1 MB<\/td>\n<\/tr>\n<tr>\n<td>Zrzuty ekranu<\/td>\n<td><code>screenshot-1.png<\/code>, <code>screenshot-2.jpg<\/code> \u2026<\/td>\n<td>10 MB<\/td>\n<\/tr>\n<tr>\n<td>Podgl\u0105d w Playground<\/td>\n<td><code>blueprints\/blueprint.json<\/code><\/td>\n<td>100 kB (limit importera)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Wymiary w pikselach musz\u0105 zgadza\u0107 si\u0119 z nazwami, a baner w wysokiej rozdzielczo\u015bci dzia\u0142a tylko jako uzupe\u0142nienie zwyk\u0142ego. Nazwy plik\u00f3w musz\u0105 by\u0107 pisane ma\u0142ymi literami. Banery i zrzuty ekranu da si\u0119 lokalizowa\u0107 przyrostkami takimi jak <code>-de<\/code>, banery tak\u017ce przyrostkiem <code>-rtl<\/code>. Z powodu buforowania w CDN nowe grafiki mog\u0105 pojawi\u0107 si\u0119 dopiero po sze\u015bciu godzinach.<\/p>\n<p>W przypadku blueprintu importer przyjmuje tylko poprawny JSON i dopisuje krok <code>installPlugin<\/code> z aktywacj\u0105, je\u015bli plik sam nie instaluje wtyczki. Przycisk podgl\u0105du widz\u0105 wy\u0142\u0105cznie committerzy, dop\u00f3ki kt\u00f3ry\u015b z nich nie prze\u0142\u0105czy podgl\u0105du na publiczny w widoku Advanced wtyczki. Tworzenie blueprintu opisuje <span class=\"lw-artikel-geplant\">artyku\u0142 o Playground i Blueprints<\/span> w tej serii.<\/p>\n<h2>Pe\u0142na sekwencja polece\u0144 dla pierwszego wydania i aktualizacji<\/h2>\n<p>Nazw\u0105 u\u017cytkownika SVN jest nazwa u\u017cytkownika WordPress.org, a nie adres e-mail, przy czym wielko\u015b\u0107 liter ma znaczenie. Osobne has\u0142o do SVN da si\u0119 ustawi\u0107 w profilu na WordPress.org. Poni\u017csza sekwencja obejmuje pierwsze wydanie wersji 1.2.0 wraz z assets:<\/p>\n<pre><code># First release: check out the repository created after approval.\nsvn co https:\/\/plugins.svn.wordpress.org\/lw-reading-time lw-reading-time-svn\ncd lw-reading-time-svn\n\n# Main plugin file and readme.txt go directly into trunk\/, not into a subfolder.\ncp ..\/lw-reading-time\/lw-reading-time.php ..\/lw-reading-time\/readme.txt trunk\/\nsvn add trunk\/*\n\n# Banner, icon, screenshots and blueprint go into the top-level assets\/ folder.\ncp ..\/lw-reading-time-assets\/banner-772x250.png ..\/lw-reading-time-assets\/banner-1544x500.png assets\/\ncp ..\/lw-reading-time-assets\/icon-128x128.png ..\/lw-reading-time-assets\/icon-256x256.png assets\/\ncp ..\/lw-reading-time-assets\/screenshot-1.png ..\/lw-reading-time-assets\/screenshot-2.png assets\/\nmkdir assets\/blueprints\ncp ..\/lw-reading-time-assets\/blueprint.json assets\/blueprints\/\nsvn add assets\/*\n\n# Serve the images as images instead of application\/octet-stream.\nsvn propset svn:mime-type image\/png assets\/*.png\n\n# The username is case sensitive.\nsvn ci -m \"Add LW Reading Time 1.2.0 to trunk, add assets\" --username WPORG_USERNAME\n\n# Tag the release from trunk and commit the tag.\nsvn cp trunk tags\/1.2.0\nsvn ci -m \"Tag version 1.2.0\"<\/code><\/pre>\n<p>Mi\u0119dzy oboma commitami Stable tag wskazuje tag, kt\u00f3ry jeszcze nie istnieje, wi\u0119c katalog na chwil\u0119 wraca do <code>trunk\/<\/code>; podr\u0119cznik opisuje to jako nieszkodliwe. Wiersz z <code>svn propset<\/code> to udokumentowane rozwi\u0105zanie sytuacji, w kt\u00f3rej przegl\u0105darka pobiera grafiki zamiast je wy\u015bwietla\u0107; dla plik\u00f3w JPEG w\u0142a\u015bciwym typem jest <code>image\/jpeg<\/code>.<\/p>\n<p>Przy ka\u017cdym kolejnym wydaniu podr\u0119cznik zaleca najpierw zmieni\u0107 <code>trunk\/<\/code> \u0142\u0105cznie z nowym Stable tag, potem skopiowa\u0107 trunk do nowego tagu poleceniem <code>svn cp<\/code> i zatwierdzi\u0107 oba w jednym commicie:<\/p>\n<pre><code># Next release: bring the working copy up to date.\ncd lw-reading-time-svn\nsvn up\n\n# Version header and Stable tag both say 1.3.0 in the copied files.\ncp ..\/lw-reading-time\/lw-reading-time.php ..\/lw-reading-time\/readme.txt trunk\/\nsvn add --force trunk\nsvn stat\nsvn diff\n\n# Copy trunk to the new tag and commit trunk and tag together.\nsvn cp trunk tags\/1.3.0\nsvn ci -m \"Release 1.3.0\"<\/code><\/pre>\n<p>Poniewa\u017c <code>svn cp<\/code> dzia\u0142a w kopii roboczej, historia zostaje zachowana, a tag dostaje dok\u0142adnie pliki z <code>trunk\/<\/code>, \u0142\u0105cznie z readme zawieraj\u0105cym w\u0142a\u015bciwy Stable tag. Wszystko, co trafi do commita, l\u0105duje na stronach u\u017cytkownik\u00f3w, tak\u017ce <code>.gitignore<\/code>; archiwa ZIP w og\u00f3le nie nale\u017c\u0105 do SVN.<\/p>\n<h2>Typowe b\u0142\u0119dy i walidator readme<\/h2>\n<p>Wi\u0119kszo\u015b\u0107 problem\u00f3w po wydaniu wynika z kilku przyczyn:<\/p>\n<ul>\n<li><strong>Stable tag wskazuje nieistniej\u0105cy tag.<\/strong> Importer z ostrze\u017ceniem wraca do <code>trunk\/<\/code>, a u\u017cytkownicy dostaj\u0105 to, co akurat le\u017cy w trunk, by\u0107 mo\u017ce niedoko\u0144czony kod.<\/li>\n<li><strong><code>Stable tag: trunk<\/code>.<\/strong> To nadal dzia\u0142a, ale podr\u0119cznik uznaje takie ustawienie za nieobs\u0142ugiwane i zabrania go w nowych wtyczkach. Walidator oznacza ka\u017cdy Stable tag zawieraj\u0105cy \u201etrunk\u201d, a przy w\u0142\u0105czonym potwierdzaniu wyda\u0144 importer odrzuca wydanie z trunk.<\/li>\n<li><strong>Tag utworzony, nag\u0142\u00f3wek niezmieniony.<\/strong> Strona nadal pokazuje star\u0105 wersj\u0119, a importer zg\u0142asza niezgodno\u015b\u0107 nag\u0142\u00f3wka Version z tagiem.<\/li>\n<li><strong>Readme zmienione tylko w trunk.<\/strong> Dop\u00f3ki Stable tag wskazuje istniej\u0105cy tag, zmiana si\u0119 nie pojawi.<\/li>\n<li><strong>B\u0142\u0119dne nazwy assets.<\/strong> W\u0142asne rozmiary baner\u00f3w, nazwy pisane wielkimi literami albo assets w <code>trunk\/<\/code> s\u0105 ignorowane.<\/li>\n<li><strong>Zale\u017cno\u015bci spoza katalogu.<\/strong> Slug w <code>Requires Plugins<\/code>, kt\u00f3ry nie jest opublikowan\u0105 wtyczk\u0105 z katalogu, zatrzymuje import.<\/li>\n<\/ul>\n<p>Walidator readme pod adresem <code>wordpress.org\/plugins\/developers\/readme-validator\/<\/code> korzysta z tego samego parsera co katalog. Przyjmuje wklejony tekst albo adres URL w domenach <code>plugins.svn.wordpress.org<\/code>, <code>themes.svn.wordpress.org<\/code> lub <code>raw.githubusercontent.com<\/code> do 512 kB. B\u0142\u0119dy to m.in. brakuj\u0105ca albo pozostawiona jako szablon nazwa, np. dos\u0142owne <code>=== Plugin Name ===<\/code>, znak towarowy w nazwie i niezgodna licencja. Ostrze\u017cenia dotycz\u0105 nieprawid\u0142owego Stable tag, brakuj\u0105cego lub pomini\u0119tego \u201eTested up to\u201d, odrzuconych Contributors, nadmiarowych tag\u00f3w i skr\u00f3conego tekstu. Uwagi wymieniaj\u0105 brakuj\u0105ce elementy opcjonalne, takie jak FAQ, changelog czy zrzuty ekranu. Walidator widzi wy\u0142\u0105cznie readme; istnienie tagu, zgodno\u015b\u0107 wersji i rozwi\u0105zywalno\u015b\u0107 zale\u017cno\u015bci sprawdza dopiero import.<\/p>\n<h2>Ograniczenia i otwarte kwestie<\/h2>\n<p>Stwierdzenia o pierwsze\u0144stwie p\u00f3l opieraj\u0105 si\u0119 na kodzie \u017ar\u00f3d\u0142owym katalogu w lustrzanym repozytorium meta na GitHubie wed\u0142ug stanu na 29.09.2026. Ten kod cz\u0119sto si\u0119 zmienia; sama klasa importu dosta\u0142a we wrze\u015bniu 2026 kilka commit\u00f3w. Zachowanie mo\u017ce si\u0119 wi\u0119c zmieni\u0107 bez aktualizacji podr\u0119cznika.<\/p>\n<p>Kilka kwestii pozostaje otwartych. Zdanie z podr\u0119cznika, \u017ce readme nie jest ju\u017c analizowane pod k\u0105tem wymaga\u0144, dotyczy rdzenia WordPressa; katalog nadal traktuje warto\u015bci z readme jako zast\u0119pcze. Nie prze\u015bledzono, kt\u00f3ry wpis Upgrade Notice API aktualizacji wybiera dla konkretnej aktualizacji. Nie sprawdzono te\u017c, jak \u015bci\u015ble wyszukiwanie Contributors traktuje wielko\u015b\u0107 liter.<\/p>\n<p>Polecenia dotycz\u0105ce typu MIME s\u0105 udokumentowane tylko dla PNG i JPEG, nie dla ikon SVG. Warto\u015b\u0107 10 kB dla readme to raczej og\u00f3lne ostrze\u017cenie ni\u017c twardy limit.<\/p>\n<p>Przyk\u0142adowa wtyczka nie zosta\u0142a zg\u0142oszona do katalogu. Na instalacji testowej z WordPressem 7.1.2 aktywuje si\u0119 bez komunikat\u00f3w, a Plugin Check 2.1.0 nie zg\u0142asza dla niej b\u0142\u0119d\u00f3w. Obie sekwencje polece\u0144 SVN przesz\u0142y bez b\u0142\u0119d\u00f3w na lokalnym repozytorium. Opisane zachowanie walidatora wynika z jego kodu \u017ar\u00f3d\u0142owego.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy opis na stronie wtyczki pochodzi z trunk\/readme.txt, czy z tagu?<\/h3>\n<p>Z tagu. W <code>trunk\/readme.txt<\/code> odczytywany jest tylko wiersz <code>Stable tag<\/code>. Je\u015bli wskazany folder w <code>tags\/<\/code> istnieje i zawiera pliki, readme, nag\u0142\u00f3wek wtyczki i plik ZIP pochodz\u0105 stamt\u0105d. Zmiany obecne tylko w trunk nie pojawiaj\u0105 si\u0119, dop\u00f3ki tag istnieje.<\/p>\n<h3>Dlaczego strona wtyczki pokazuje inn\u0105 warto\u015b\u0107 \u201eTested up to\u201d ni\u017c readme?<\/h3>\n<p>S\u0105 dwa typowe powody:<\/p>\n<ul>\n<li>Katalog ignoruje wersje poprawkowe i sam dopisuje aktualn\u0105, wi\u0119c z <code>7.0<\/code> robi si\u0119 np. <code>7.0.6<\/code>.<\/li>\n<li>Wiersz <code>Tested up to<\/code> w nag\u0142\u00f3wku pliku g\u0142\u00f3wnego nadpisuje readme, je\u015bli jest poprawnie sformatowany.<\/li>\n<\/ul>\n<p>Warto\u015b\u0107 zbyt odleg\u0142\u0105 od bie\u017c\u0105cej ga\u0142\u0119zi stabilnej parser ca\u0142kowicie odrzuca.<\/p>\n<h3>Czy wtyczka z katalogu mo\u017ce zale\u017ce\u0107 od wtyczki sprzedawanej poza WordPress.org?<\/h3>\n<p>Nie. Wtyczki hostowane na WordPress.org mog\u0105 w <code>Requires Plugins<\/code> wskazywa\u0107 tylko wtyczki r\u00f3wnie\u017c tam hostowane, i to jako slug, a nie \u015bcie\u017ck\u0119. Je\u015bli sluga nie da si\u0119 przypisa\u0107 do opublikowanej wtyczki, importer przerywa wydanie.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/how-your-readme-txt-works\/\" target=\"_blank\" rel=\"noopener noreferrer\">Plugin Handbook: How your readme.txt works<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/plugin-basics\/header-requirements\/\" target=\"_blank\" rel=\"noopener noreferrer\">Plugin Handbook: Header Requirements<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/how-to-use-subversion\/\" target=\"_blank\" rel=\"noopener noreferrer\">Plugin Handbook: Using Subversion<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/plugin-assets\/\" target=\"_blank\" rel=\"noopener noreferrer\">Plugin Handbook: How Your Plugin Assets Work<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/previews-and-blueprints\/\" target=\"_blank\" rel=\"noopener noreferrer\">Plugin Handbook: Previews and Blueprints<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/developers\/readme-validator\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress.org: Readme Validator<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/readme.txt\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress.org: przyk\u0142adowy plik readme.txt<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/github.com\/WordPress\/wordpress.org\/blob\/trunk\/wordpress.org\/public_html\/wp-content\/plugins\/plugin-directory\/readme\/class-parser.php\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub WordPress\/wordpress.org: parser readme (class-parser.php)<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/github.com\/WordPress\/wordpress.org\/blob\/trunk\/wordpress.org\/public_html\/wp-content\/plugins\/plugin-directory\/readme\/class-validator.php\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub WordPress\/wordpress.org: walidator readme (class-validator.php)<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/github.com\/WordPress\/wordpress.org\/blob\/trunk\/wordpress.org\/public_html\/wp-content\/plugins\/plugin-directory\/cli\/class-import.php\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub WordPress\/wordpress.org: importer wtyczek (class-import.php)<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/github.com\/WordPress\/wordpress-develop\/blob\/trunk\/src\/wp-admin\/includes\/plugin.php\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub WordPress\/wordpress-develop: validate_plugin_requirements() w plugin.php<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/github.com\/WordPress\/wordpress-develop\/blob\/trunk\/src\/wp-admin\/update-core.php\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub WordPress\/wordpress-develop: Upgrade Notice w update-core.php<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/make.wordpress.org\/core\/2024\/03\/05\/introducing-plugin-dependencies-in-wordpress-6-5\/\" target=\"_blank\" rel=\"noopener noreferrer\">Make WordPress Core: Introducing Plugin Dependencies in WordPress 6.5<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/plugin-check\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress.org: Plugin Check (PCP), strona wtyczki i changelog<\/a> (dost\u0119p 29.09.2026)<\/li>\n<li><a href=\"https:\/\/api.wordpress.org\/core\/version-check\/1.7\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress.org API: sprawdzanie wersji rdzenia (aktualne wydanie 7.1.2)<\/a> (dost\u0119p 29.09.2026)<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Nag\u0142\u00f3wek wtyczki, plik readme.txt i tagi SVN wsp\u00f3lnie decyduj\u0105 o tym, co pokazuje katalog WordPress.org. Kod importera rozstrzyga, kt\u00f3re pole wygrywa.<\/p>\n","protected":false},"author":1,"featured_media":20903,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[25],"tags":[92229,92762,92286],"class_list":["post-20862","post","type-post","status-publish","format-standard","hentry","category-wordpress-plugins-tricks-pl","tag-devops-pl","tag-web-development-pl","tag-wordpress-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Nag\u0142\u00f3wek czy readme.txt: kt\u00f3ra warto\u015b\u0107 trafia na stron\u0119 wtyczki w WordPress.org, jak Stable tag wybiera kod, nazwy assets i pe\u0142na sekwencja polece\u0144 SVN.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Nag\u0142\u00f3wek czy readme.txt: kt\u00f3ra warto\u015b\u0107 trafia na stron\u0119 wtyczki w WordPress.org, jak Stable tag wybiera kod, nazwy assets i pe\u0142na sekwencja polece\u0144 SVN.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-10T17:12:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20862-readme-naglowek-wtyczki-svn.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org\",\"datePublished\":\"2026-10-10T17:12:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/\"},\"wordCount\":2462,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/fi-20862-readme-naglowek-wtyczki-svn.png\",\"keywords\":[\"DevOps\",\"Web Development\",\"WordPress\"],\"articleSection\":[\"Wtyczki i triki WordPress\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/\",\"name\":\"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/fi-20862-readme-naglowek-wtyczki-svn.png\",\"datePublished\":\"2026-10-10T17:12:00+00:00\",\"description\":\"Nag\u0142\u00f3wek czy readme.txt: kt\u00f3ra warto\u015b\u0107 trafia na stron\u0119 wtyczki w WordPress.org, jak Stable tag wybiera kod, nazwy assets i pe\u0142na sekwencja polece\u0144 SVN.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/fi-20862-readme-naglowek-wtyczki-svn.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/fi-20862-readme-naglowek-wtyczki-svn.png\",\"width\":1200,\"height\":630,\"caption\":\"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/wordpress-plugins-tricks-pl\\\/readme-naglowek-wtyczki-svn\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org | Lukas Wojcik","description":"Nag\u0142\u00f3wek czy readme.txt: kt\u00f3ra warto\u015b\u0107 trafia na stron\u0119 wtyczki w WordPress.org, jak Stable tag wybiera kod, nazwy assets i pe\u0142na sekwencja polece\u0144 SVN.","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:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/","og_locale":"en_US","og_type":"article","og_title":"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org | Lukas Wojcik","og_description":"Nag\u0142\u00f3wek czy readme.txt: kt\u00f3ra warto\u015b\u0107 trafia na stron\u0119 wtyczki w WordPress.org, jak Stable tag wybiera kod, nazwy assets i pe\u0142na sekwencja polece\u0144 SVN.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-10T17:12:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20862-readme-naglowek-wtyczki-svn.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org","datePublished":"2026-10-10T17:12:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/"},"wordCount":2462,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20862-readme-naglowek-wtyczki-svn.png","keywords":["DevOps","Web Development","WordPress"],"articleSection":["Wtyczki i triki WordPress"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/","name":"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20862-readme-naglowek-wtyczki-svn.png","datePublished":"2026-10-10T17:12:00+00:00","description":"Nag\u0142\u00f3wek czy readme.txt: kt\u00f3ra warto\u015b\u0107 trafia na stron\u0119 wtyczki w WordPress.org, jak Stable tag wybiera kod, nazwy assets i pe\u0142na sekwencja polece\u0144 SVN.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20862-readme-naglowek-wtyczki-svn.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/fi-20862-readme-naglowek-wtyczki-svn.png","width":1200,"height":630,"caption":"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/wordpress-plugins-tricks-pl\/readme-naglowek-wtyczki-svn\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"readme.txt, nag\u0142\u00f3wek wtyczki i SVN: jak czyta je WordPress.org"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/20862","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=20862"}],"version-history":[{"count":1,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/20862\/revisions"}],"predecessor-version":[{"id":21737,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/20862\/revisions\/21737"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/20903"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=20862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=20862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=20862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}