{"id":29430,"date":"2021-06-14T16:52:00","date_gmt":"2021-06-14T13:52:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=29430"},"modified":"2021-10-18T03:32:26","modified_gmt":"2021-10-18T00:32:26","slug":"jak-dodac-niestandardowe-punkty-koncowe-do-api-wordpress","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/jak-dodac-niestandardowe-punkty-koncowe-do-api-wordpress\/","title":{"rendered":"Jak doda\u0107 niestandardowe punkty ko\u0144cowe do API WordPress?"},"content":{"rendered":"<p>Ostatnio pracowa\u0142em nad projektem, w kt\u00f3rym chcieli\u015bmy wykorzysta\u0107 AngularJS na frontendzie i WordPress jako backend. W celu wymiany danych pomi\u0119dzy AngularJS a WordPress wykorzystali\u015bmy WordPress REST API. Praca z REST API w WordPressie by\u0142a dobrym do\u015bwiadczeniem. WordPress zapewnia bardzo czysty i wydajny spos\u00f3b na rozpocz\u0119cie korzystania z interfejsu API REST. Ten popularny CMS pozwala r\u00f3wnie\u017c na zbudowanie niestandardowego punktu ko\u0144cowego do wysy\u0142ania\/odbierania danych za jego po\u015brednictwem.<\/p>\n<p>W tym artykule dowiemy si\u0119, jak utworzy\u0107 niestandardowy punkt ko\u0144cowy w WordPress REST API. Zamierzam zbudowa\u0107 niestandardowy punkt ko\u0144cowy dla \u017c\u0105dania GET i POST.<\/p>\n<h3>Korzystanie z WordPress REST API<\/h3>\n<p>Wszyscy wiedz\u0105 o popularno\u015bci aplikacji mobilnych i framework\u00f3w JavaScript. Buduj\u0105c aplikacj\u0119 mobiln\u0105 lub stron\u0119 internetow\u0105 z wykorzystaniem frameworka JavaScript musisz wej\u015b\u0107 w interakcj\u0119 z backendem w celu wymiany danych.<\/p>\n<p>Do cel\u00f3w backendowych mo\u017cna wybra\u0107 dowoln\u0105 platform\u0119, tak\u0105 jak WordPress, Laravel. Jedynym wymaganiem jest posiadanie punkt\u00f3w ko\u0144cowych API na platformie backendowej do wymiany danych z frontendem. System frontendowy daje wywo\u0142anie API do backendu. Na backendzie powinni\u015bmy zbudowa\u0107 system, kt\u00f3ry b\u0119dzie odbiera\u0142 \u017c\u0105dania API i je przetwarza\u0142.<\/p>\n<p>Najcz\u0119\u015bciej u\u017cywali\u015bmy dw\u00f3ch typ\u00f3w \u017c\u0105da\u0144 w punktach ko\u0144cowych API \u2013 GET i POST. Podczas gdy wywo\u0142ujemy API z \u017c\u0105daniem GET, API w odpowiedzi poda dane z bazy danych lub usunie dane w bazie danych. W przypadku \u017c\u0105da\u0144 POST albo wstawiamy rekordy do bazy danych, albo por\u00f3wnujemy dane z baz\u0105 danych. Oczywi\u015bcie nie jest to zasada kciuka. U\u017cytkownicy mog\u0105 decydowa\u0107, jak si\u0119 zachowuje, w zale\u017cno\u015bci od ich wymaga\u0144.<\/p>\n<h3>Autoryzacja przy u\u017cyciu WordPress REST API<\/h3>\n<p>WordPress REST API wymaga \u015bledzenia przep\u0142ywu Basic Auth. W Basic Auth musisz wys\u0142a\u0107 token w nag\u0142\u00f3wku Authorization podczas wysy\u0142ania \u017c\u0105dania API. Pocz\u0105wszy od WordPress 5.6, w systemie pojawia si\u0119 nowa funkcja \u201eHas\u0142a aplikacji&quot;. To has\u0142o aplikacji (z nazw\u0105 u\u017cytkownika) mo\u017ce by\u0107 u\u017cywane jako token w nag\u0142\u00f3wku Authorization.<\/p>\n<p>Has\u0142a aplikacji s\u0105 dost\u0119pne dla wszystkich u\u017cytkownik\u00f3w w witrynach obs\u0142ugiwanych przez SSL\/HTTPS. Je\u015bli z jakiego\u015b powodu nie korzystasz z SSL na swojej stronie, udost\u0119pniasz go za pomoc\u0105 poni\u017cszego filtra.<\/p>\n<pre><code>add_filter( 'wp_is_application_passwords_available', '__return_true' );<\/code><\/pre>\n<p>Opcj\u0119 Has\u0142a aplikacji znajdziesz na stronie <strong>U\u017cytkownicy-&gt;Profil<\/strong>. Wygeneruj has\u0142o, po prostu wprowadzaj\u0105c nazw\u0119 aplikacji.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20211-6081cde961b7f.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-20211-6081cde961b7f.png\" alt=\"Jak doda\u0107 niestandardowe punkty ko\u0144cowe do API WordPress?\" ><\/a><\/p>\n<p>Na zrzucie ekranu zauwa\u017cysz spacje w ha\u015ble. Has\u0142a aplikacji mog\u0105 by\u0107 u\u017cywane z lub bez spacji. Je\u015bli zostan\u0105 uwzgl\u0119dnione, spacje zostan\u0105 po prostu usuni\u0119te, zanim has\u0142o zostanie zaszyfrowane i zweryfikowane po stronie WordPress.<\/p>\n<p>Teraz jeste\u015b gotowy z has\u0142em. Nast\u0119pnie, aby utworzy\u0107 token Auth, musisz utworzy\u0107 zakodowan\u0105 Base64 wersj\u0119 swojej nazwy u\u017cytkownika i has\u0142a aplikacji. Za\u0142\u00f3\u017cmy, \u017ce twoja nazwa u\u017cytkownika to \u201eadmin&#8221;, a has\u0142o to \u201eHo9c 9vGs AOBG nXb0 FPpr W5vO&#8221;. U\u017cyj poni\u017cszej instrukcji, kt\u00f3ra daje ostateczny wa\u017cny token.<\/p>\n<pre><code>&lt;?php\n$username = 'admin';\n$application_password = 'Ho9c 9vGs AOBG nXb0 FPpr W5vO';\n\u00a0\necho base64_encode($username.':'.$application_password);<\/code><\/pre>\n<p>Powy\u017csza instrukcja zwraca warto\u015b\u0107 tokena jako <code>YWRtaW46SG85YyA5dkdzIEFPQkcgblhiMCBGUHByIFc1dk8=<\/code>. Ten token musisz wys\u0142a\u0107 w nag\u0142\u00f3wku Authorization podczas wywo\u0142ywania WordPress REST API.<\/p>\n<h3>Zaloguj si\u0119 za pomoc\u0105 WordPress REST API<\/h3>\n<p>Jeste\u015bmy gotowi z warto\u015bci\u0105 tokena Basic Auth. Teraz zbudujmy niestandardowy punkt ko\u0144cowy dla systemu logowania. W poni\u017cszym kodzie piszemy punkt ko\u0144cowy API, kt\u00f3ry otrzymuje dane uwierzytelniaj\u0105ce u\u017cytkownika i sprawdza, czy dane s\u0105 poprawne, czy nie. Musisz doda\u0107 ten kod w swoim <code>functions.php<\/code>pliku motyw\u00f3w .<\/p>\n<pre><code>add_action(\n\u00a0\u00a0\u00a0\u00a0'rest_api_init',\n\u00a0\u00a0\u00a0\u00a0function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0register_rest_route(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'api',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'login',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'methods'\u00a0 =&gt; 'POST',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'callback' =&gt; 'login',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0}\n);<\/code><\/pre>\n<p>WordPress udost\u0119pnia akcj\u0119 \u201erest_api_init&#8221;, za pomoc\u0105 kt\u00f3rej mo\u017cemy zbudowa\u0107 nasze niestandardowe punkty ko\u0144cowe. Tutaj u\u017cywam funkcji <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/register_rest_route\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">register_rest_route,<\/a> kt\u00f3ra produkuje powy\u017cszy punkt ko\u0144cowy API jako YOUR_SITE_URL\/wp-json\/api\/login.<\/p>\n<p>W naszym kodzie \u201eapi&#8221; to przestrze\u0144 nazw, \u201elogin&#8221; to trasa, metoda to \u201ePOST&#8221;, a funkcja zwrotna to \u201elogin&#8221;. Metoda wywo\u0142ania zwrotnego b\u0119dzie mia\u0142a rzeczywist\u0105 logik\u0119.<\/p>\n<p>Aby napisa\u0107 logik\u0119 przep\u0142ywu logowania, wymagane parametry POST to e-mail i has\u0142o, kt\u00f3re nale\u017cy przes\u0142a\u0107 z frontendu wraz z nag\u0142\u00f3wkiem Authorization. Publikuj\u0105c te dane, musisz przes\u0142a\u0107 je w formacie JSON. Na przyk\u0142ad z VSCode za pomoc\u0105 <a href=\"https:\/\/themewp.inform.click\/pl\/rozszerzenie-klienta-rest-dla-kodu-programu-visual-studio\/\" title=\"Rest Client Extension\">Rest Client Extension<\/a> wysy\u0142am \u017c\u0105danie POST, jak pokazano na zrzucie ekranu poni\u017cej.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20211-6081cde961b7f.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-20211-6081cde961b7f.png\" alt=\"Jak doda\u0107 niestandardowe punkty ko\u0144cowe do API WordPress?\" ><\/a><\/p>\n<p>Tutaj przekazali\u015bmy token utworzony w poprzednim kroku jako warto\u015b\u0107 nag\u0142\u00f3wka Authorization.<\/p>\n<p>Dodaj poni\u017cszy kod dla <code>login()<\/code>metody w <code>functions.php<\/code>pliku.<\/p>\n<pre><code>function login( WP_REST_Request $request) {\n\u00a0\u00a0\u00a0\u00a0$arr_request = json_decode( $request-&gt;get_body() );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0if (! empty( $arr_request-&gt;email) &amp;&amp;! empty( $arr_request-&gt;password)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ this returns the user ID and other info from the user name.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = get_user_by( 'email', $arr_request-&gt;email );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! $user) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ if the user name doesn't exist.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'status' =&gt; 'error',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'message' =&gt; 'Wrong email address.',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ check the user's login with their password.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! wp_check_password( $arr_request-&gt;password, $user-&gt;user_pass, $user-&gt;ID)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ if the password is incorrect for the specified user.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'status' =&gt; 'error',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'message' =&gt; 'Wrong password.',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'status' =&gt; 'success',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'message' =&gt; 'User credentials are correct.',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'status' =&gt; 'error',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'message' =&gt; 'Email and password are required.',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p><strong>Uwaga:<\/strong> je\u015bli otrzymasz b\u0142\u0105d typu \u201eNie znaleziono trasy pasuj\u0105cej do adresu URL i metody \u017c\u0105dania&#8221;, musisz zaktualizowa\u0107 sw\u00f3j link bezpo\u015bredni.<\/p>\n<p>Po otrzymaniu warto\u015bci \u201esuccess&#8221; dla klucza \u201estatus&#8221; mo\u017cesz zalogowa\u0107 u\u017cytkownika w aplikacji frontendowej.<\/p>\n<h3>Zbuduj punkt ko\u0144cowy dla \u017c\u0105dania GET<\/h3>\n<p>Widzieli\u015bmy, jak budowa\u0107 niestandardowe punkty ko\u0144cowe dla \u017c\u0105da\u0144 POST. Teraz przyjrzyjmy si\u0119 \u017c\u0105daniu GET za pomoc\u0105 WordPress REST API. W tym celu napisz\u0119 API, kt\u00f3re usuwa u\u017cytkownika. Z interfejsu u\u017cytkownika nale\u017cy przekaza\u0107 identyfikator u\u017cytkownika jako parametr GET.<\/p>\n<pre><code>add_action(\n\u00a0\u00a0\u00a0\u00a0'rest_api_init',\n\u00a0\u00a0\u00a0\u00a0function() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0register_rest_route(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'api',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'delete_user\/(?P&lt;id&gt;d+)',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'methods'\u00a0 =&gt; 'GET',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'callback' =&gt; 'delete_user',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\u00a0\u00a0}\n);<\/code><\/pre>\n<p>Ten kod generuje punkt ko\u0144cowy interfejsu API jako YOUR_SITE_URL\/wp-json\/api\/delete_user\/id. Do tego punktu ko\u0144cowego zamiast id nale\u017cy przekaza\u0107 rzeczywisty identyfikator u\u017cytkownika.<\/p>\n<p>Metoda wywo\u0142ania zwrotnego <code>delete_user<\/code>b\u0119dzie mia\u0142a nast\u0119puj\u0105cy kod.<\/p>\n<pre><code>function delete_user( $data) {\n\u00a0\u00a0\u00a0\u00a0\/\/ delete the user\n\u00a0\u00a0\u00a0\u00a0require_once(ABSPATH.'wp-admin\/includes\/user.php' );\n\u00a0\u00a0\u00a0\u00a0if (wp_delete_user($data['id'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'status' =&gt; 'success',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'message' =&gt; 'User deleted successfully.',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'status' =&gt; 'error',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'message' =&gt; 'It seems you passed the wrong user id.',\n\u00a0\u00a0\u00a0\u00a0];\n}<\/code><\/pre>\n<p>Mam nadziej\u0119, \u017ce rozumiesz, jak zbudowa\u0107 niestandardowy punkt ko\u0144cowy w WordPress REST API. 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\/szybki-przewodnik-po-woocommerce-rest-api\/\" title=\"Szybki przewodnik po WooCommerce REST API\">Szybki przewodnik po WooCommerce REST API<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/jak-wyswietlic-powiazane-produkty-za-pomoca-woocommerce-rest-api\/\" title=\"Jak wy\u015bwietli\u0107 powi\u0105zane produkty za pomoc\u0105 WooCommerce REST API\">Jak wy\u015bwietli\u0107 powi\u0105zane produkty za pomoc\u0105 WooCommerce REST API<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pl\/zamiana-mowy-na-tekst-przy-uzyciu-transkrypcji-amazon-w-php\/\" title=\"Zamiana mowy na tekst przy u\u017cyciu transkrypcji Amazon w PHP\">Zamiana mowy na tekst przy u\u017cyciu transkrypcji Amazon w PHP<\/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>Czy chcesz utworzy\u0107 niestandardowy punkt ko\u0144cowy w WordPress REST API? Buduj\u0105c aplikacj\u0119 mobiln\u0105 lub stron\u0119 internetow\u0105 za pomoc\u0105 frameworka JavaScript<\/p>\n","protected":false},"author":1,"featured_media":21623,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[612],"tags":[847],"class_list":["post-29430","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29430","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=29430"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/29430\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/21623"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=29430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=29430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=29430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}