{"id":29286,"date":"2021-06-11T16:54:00","date_gmt":"2021-06-11T13:54:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29286"},"modified":"2021-10-18T03:33:21","modified_gmt":"2021-10-18T00:33:21","slug":"jak-polaczyc-baze-danych-firebase-realtime-z-formularzem-witryny","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/jak-polaczyc-baze-danych-firebase-realtime-z-formularzem-witryny\/","title":{"rendered":"Jak po\u0142\u0105czy\u0107 baz\u0119 danych Firebase Realtime z formularzem witryny?"},"content":{"rendered":"<p>Czy chcesz przechowywa\u0107 dane formularzy witryny w Firebase? Je\u015bli tak, to jeste\u015b we w\u0142a\u015bciwym miejscu. W tym artykule poka\u017c\u0119, jak po\u0142\u0105czy\u0107 baz\u0119 danych czasu rzeczywistego Firebase z formularzem i przechowywa\u0107 jej dane w Firebase.<\/p>\n<p>Baza danych czasu rzeczywistego Firebase to hostowana w chmurze baza danych NoSQL. W Firebase dane s\u0105 przechowywane w formacie JSON i synchronizowane w czasie rzeczywistym ze wszystkimi pod\u0142\u0105czonymi klientami zbudowanymi przy u\u017cyciu pakiet\u00f3w SDK dla system\u00f3w iOS, Android i JavaScript. Kiedy m\u00f3wimy w czasie rzeczywistym, oznacza to wymian\u0119 danych mi\u0119dzy aplikacjami a baz\u0105 danych w czasie rzeczywistym (bez op\u00f3\u017anie\u0144). Wi\u0119cej informacji o funkcjach Firebase znajdziesz w ich <a href=\"https:\/\/firebase.google.com\/docs\/database\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentacji<\/a>.<\/p>\n<p>W tym samouczku utworz\u0119 prosty formularz kontaktowy i b\u0119d\u0119 przechowywa\u0107 dane formularza w bazie danych Firebase w czasie rzeczywistym. Aby przes\u0142a\u0107 dane z formularza do Firebase u\u017cyj\u0119 JavaScript SDK.<\/p>\n<h3>Konfiguracja Firebase<\/h3>\n<p>Aby rozpocz\u0105\u0107, <a href=\"https:\/\/console.firebase.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">przejd\u017a<\/a> do <a href=\"https:\/\/console.firebase.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Konsoli Firebase<\/a> i utw\u00f3rz nowy projekt. U\u017cytkownik mo\u017ce r\u00f3wnie\u017c wybra\u0107 istniej\u0105cy projekt. Po utworzeniu nowego projektu zostaniesz przekierowany na stron\u0119, na kt\u00f3rej otrzymasz kod JavaScript Firebase. Kliknij ikon\u0119 kodu, kt\u00f3ra otworzy wyskakuj\u0105ce okienko.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d4836b9a0.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d4836b9a0.png\" alt=\"Jak po\u0142\u0105czy\u0107 baz\u0119 danych Firebase Realtime z formularzem witryny?\" ><\/a><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d484e50de.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d484e50de.png\" alt=\"Jak po\u0142\u0105czy\u0107 baz\u0119 danych Firebase Realtime z formularzem witryny?\" ><\/a><\/p>\n<p>Skopiuj kod pokazany w wyskakuj\u0105cym okienku, kt\u00f3ry wymaga w nast\u0119pnych krokach. W menu po lewej stronie kliknij \u201eBaza danych&quot;, a nast\u0119pnie \u201eUtw\u00f3rz baz\u0119 danych&#8221; w sekcji Baza danych czasu rzeczywistego.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d485e1c3f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d485e1c3f.png\" alt=\"Jak po\u0142\u0105czy\u0107 baz\u0119 danych Firebase Realtime z formularzem witryny?\" ><\/a><\/p>\n<p>Otworzy si\u0119 wyskakuj\u0105ce okienko, wybierz tryb testowy, a na koniec kliknij przycisk \u201eW\u0142\u0105cz&#8221;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d485e1c3f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d485e1c3f.png\" alt=\"Jak po\u0142\u0105czy\u0107 baz\u0119 danych Firebase Realtime z formularzem witryny?\" ><\/a><\/p>\n<p>Przekierujesz do nast\u0119pnego ekranu, na kt\u00f3rym zobaczysz swoj\u0105 baz\u0119 danych w czasie rzeczywistym. W tej chwili nie ma danych, wi\u0119c Twoja baza danych jest pusta.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d485e1c3f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d485e1c3f.png\" alt=\"Jak po\u0142\u0105czy\u0107 baz\u0119 danych Firebase Realtime z formularzem witryny?\" ><\/a><\/p>\n<h3>Po\u0142\u0105cz baz\u0119 danych czasu rzeczywistego Firebase z formularzem swojej witryny<\/h3>\n<p>Sko\u0144czyli\u015bmy z konfiguracj\u0105 Firebase. Nast\u0119pn\u0105 rzecz\u0105, kt\u00f3r\u0105 musisz zrobi\u0107, jest utworzenie formularza i przechowywanie danych formularza w Firebase. Zbudujmy prosty formularz kontaktowy na szczycie Bootstrapa. Utw\u00f3rz plik index.html i dodaj do niego poni\u017cszy kod.<\/p>\n<pre><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta charset=\"UTF-8\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;meta http-equiv=\"X-UA-Compatible\" content=\"ie=edge\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;title&gt;Firebase&lt;\/title&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;link rel=\"stylesheet\" href=\"https:\/\/stackpath.bootstrapcdn.com\/bootstrap\/4.5.0\/css\/bootstrap.min.css\" integrity=\"sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk\" crossorigin=\"anonymous\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"row\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"container\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h2&gt;Contact Form&lt;\/h2&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"alert alert-success success-message\" style=\"display:none;\"&gt;Form submitted successfully.&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;form id=\"contactForm\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleFullName\"&gt;Full Name&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" class=\"form-control fullname\" id=\"exampleFullName\" placeholder=\"Enter Full Name\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleEmail\"&gt;Email&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"email\" class=\"form-control email\" id=\"exampleEmail\" placeholder=\"Enter Email\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleSubject\"&gt;Subject&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"text\" class=\"form-control subject\" id=\"exampleSubject\" placeholder=\"Enter Subject\" required&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleMessage\"&gt;Message&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;textarea class=\"form-control message\" id=\"exampleMessage\" placeholder=\"Enter Message\" cols=\"30\" rows=\"10\" required&gt;&lt;\/textarea&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Submit&lt;\/button&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/form&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.5.1\/jquery.min.js\"&gt;&lt;\/script&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"https:\/\/www.gstatic.com\/firebasejs\/7.15.5\/firebase-app.js\"&gt;&lt;\/script&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"https:\/\/www.gstatic.com\/firebasejs\/7.15.5\/firebase-database.js\"&gt;&lt;\/script&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;script src=\"js\/main.js\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>W powy\u017cszym kodzie umie\u015bci\u0142em plik Firebase JS, przed <code>main.js<\/code>kt\u00f3rym wcze\u015bniej skopiowa\u0142em, oraz JS Realtime Database. Utw\u00f3rz <code>main.js<\/code>plik w folderze 'js&#8217;. Ten plik JS b\u0119dzie mia\u0142 rzeczywist\u0105 logik\u0119 interakcji z Firebase. Dodaj skopiowany kod z Firebase na g\u00f3rze <code>main.js<\/code>pliku.<\/p>\n<pre><code>\/\/ Paste the code from Firebase\nvar config = {\n\u00a0\u00a0\u00a0\u00a0apiKey: \"YOUR_API_KEY\",\n\u00a0\u00a0\u00a0\u00a0authDomain: \"Your_AuthDomain\",\n\u00a0\u00a0\u00a0\u00a0databaseURL: \"YOUR_DATABAE_URL\",\n\u00a0\u00a0\u00a0\u00a0projectId: \"YOUR_PROJECT_ID\",\n\u00a0\u00a0\u00a0\u00a0storageBucket: \"YOUR_STORAGE_BUCKET\",\n\u00a0\u00a0\u00a0\u00a0messagingSenderId: \"YOUR_SENDER_ID\",\n\u00a0\u00a0\u00a0\u00a0appId: \"YOUR_APP_ID\"\n};\nfirebase.initializeApp(config);<\/code><\/pre>\n<p>Nast\u0119pnie utw\u00f3rz kolekcj\u0119, w kt\u00f3rej b\u0119d\u0105 przechowywane dane formularza. Kolekcji mo\u017cesz nada\u0107 dowoln\u0105 nazw\u0119. W moim przypadku tworz\u0119 kolekcj\u0119 o nazwie 'contactformmessages&#8217;.<\/p>\n<pre><code>\/\/ Reference messages collection\nvar messagesRef = firebase.database().ref('contactformmessages');<\/code><\/pre>\n<p>Na koniec we\u017amiemy wszystkie warto\u015bci formularza i przeka\u017cemy je do Firebase podczas przesy\u0142ania formularza w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>$('#contactForm').submit(function(e) {\n\u00a0\u00a0\u00a0\u00a0e.preventDefault();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0var newMessageRef = messagesRef.push();\n\u00a0\u00a0\u00a0\u00a0newMessageRef.set({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0name: $('.fullname').val(),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0email: $('.email').val(),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0subject: $('.subject').val(),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0message: $('.message').val()\n\u00a0\u00a0\u00a0\u00a0});\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$('.success-message').show();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$('#contactForm')[0].reset();\n});<\/code><\/pre>\n<p>Teraz spr\u00f3buj przes\u0142a\u0107 formularz z fikcyjnymi warto\u015bciami i przejd\u017a do bazy danych Firebase w czasie rzeczywistym, powiniene\u015b zobaczy\u0107 swoje dane przechowywane w bazie danych. B\u0119dzie wygl\u0105da\u0107 jak poni\u017cej.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d485e1c3f.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20260-6081d485e1c3f.png\" alt=\"Jak po\u0142\u0105czy\u0107 baz\u0119 danych Firebase Realtime z formularzem witryny?\" ><\/a><\/p>\n<h3>Odczytywanie danych z bazy danych czasu rzeczywistego Firebase<\/h3>\n<p>Musisz dowiedzie\u0107 si\u0119, jak zapisywa\u0107 dane w Bazie danych czasu rzeczywistego Firebase. Mo\u017cesz te\u017c przeczyta\u0107 go z Firebase. Odczytywanie danych z Firebase jest \u0142atwe i wymaga tylko kilku linijek kodu JavaScript. Stworzyli\u015bmy kolekcj\u0119 wiadomo\u015bci jako <code>messagesRef<\/code>. U\u017cywaj\u0105c tej zmiennej mo\u017cesz odczyta\u0107 dane w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<pre><code>messagesRef.once('value').then((snapshot) =&gt; {\n\u00a0\u00a0\u00a0\u00a0Object.keys(snapshot.val()).forEach((key) =&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log(`Name: ${snapshot.val()[key].name}`);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log(`Email: ${snapshot.val()[key].email}`);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log(`Subject: ${snapshot.val()[key].subject}`);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log(`Message: ${snapshot.val()[key].message}`);\n\u00a0\u00a0\u00a0\u00a0});\n});<\/code><\/pre>\n<p>Mam nadziej\u0119, \u017ce dowiedzia\u0142e\u015b si\u0119 o \u0142\u0105czeniu Firebase z formularzem witryny. Podziel si\u0119 swoimi przemy\u015bleniami i sugestiami w sekcji komentarzy poni\u017cej.<\/p>\n<h4>Powi\u0105zane artyku\u0142y<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-wykonac-kopie-zapasowa-aplikacji-laravel\/\" title=\"Jak wykona\u0107 kopi\u0119 zapasow\u0105 aplikacji Laravel\">Jak wykona\u0107 kopi\u0119 zapasow\u0105 aplikacji Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/?p=27305\" title=\"Jak automatycznie przechowywa\u0107 kopi\u0119 zapasow\u0105 WordPress w Dropbox?\">Jak automatycznie przechowywa\u0107 kopi\u0119 zapasow\u0105 WordPress w Dropbox?<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/wdroz-witryne-statyczna-w-hostingu-firebase-za-darmo\/\" title=\"Wdr\u00f3\u017c witryn\u0119 statyczn\u0105 w Hostingu Firebase za darmo\">Wdr\u00f3\u017c witryn\u0119 statyczn\u0105 w Hostingu Firebase za darmo<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym artykule dowiemy si\u0119, jak po\u0142\u0105czy\u0107 formularz witryny z baz\u0105 danych czasu rzeczywistego Firebase. W ten spos\u00f3b dane naszego formularza b\u0119d\u0105 przechowywane w Firebase<\/p>\n","protected":false},"author":1,"featured_media":20261,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[249],"tags":[847],"class_list":["post-29286","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-javascript-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29286","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/comments?post=29286"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29286\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/20261"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=29286"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29286"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29286"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}