{"id":233807,"date":"2023-02-22T13:05:00","date_gmt":"2023-02-22T10:05:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233807"},"modified":"2022-11-11T12:32:41","modified_gmt":"2022-11-11T09:32:41","slug":"jak-dodac-niestandardowe-pola-i-zakladki-do-metabox-danych-produktu-woocommerce-wedlug-kodu","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/jak-dodac-niestandardowe-pola-i-zakladki-do-metabox-danych-produktu-woocommerce-wedlug-kodu\/","title":{"rendered":"Jak doda\u0107 niestandardowe pola i zak\u0142adki do metabox danych produktu WooCommerce wed\u0142ug kodu?"},"content":{"rendered":"\n<p>W tym po\u015bcie dowiemy si\u0119, jak doda\u0107 niestandardowe pola meta do metaboxa danych produktu WooCommerce; jak doda\u0107 pola, a tak\u017ce jak doda\u0107 w\u0142asn\u0105 niestandardow\u0105 kart\u0119. Om\u00f3wimy szczeg\u00f3\u0142owo, jak doda\u0107 pola, gdzie je doda\u0107, jak je zapisa\u0107 i wreszcie jak wy\u015bwietli\u0107 je w interfejsie u\u017cytkownika.<\/p>\n<h2>Dodawanie niestandardowych p\u00f3l do istniej\u0105cych paneli<\/h2>\n<p>Najpierw przyjrzymy si\u0119, jak doda\u0107 pole do istniej\u0105cych paneli. Musimy zaczepi\u0107 o dwa haki; jeden do wyprowadzania pola, a drugi do zapisywania jego warto\u015bci. Pierwszy hak zale\u017cy od zak\u0142adki, w kt\u00f3rej chcesz wy\u015bwietli\u0107 swoje pole.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152172-61e4d3f68509c.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152172-61e4d3f68509c.png\" alt=\"Jak doda\u0107 niestandardowe pola i zak\u0142adki do metabox danych produktu WooCommerce wed\u0142ug kodu?\" ><\/a><\/p>\n<p>Metabox danych produktu<\/p>\n<p>Pami\u0119taj, \u017ce widoczno\u015b\u0107 zak\u0142adki r\u00f3\u017cni si\u0119 w zale\u017cno\u015bci od typu produktu. Na przyk\u0142ad karta \u201eOg\u00f3lne&quot; zostaje usuni\u0119ta po prze\u0142\u0105czeniu na zgrupowany typ produktu. Dlatego nie tylko powiniene\u015b rozwa\u017cy\u0107, gdzie logicznie pasuj\u0105 twoje niestandardowe pola, ale musisz wzi\u0105\u0107 pod uwag\u0119 panel, kt\u00f3ry jest widoczny dla wszystkich po\u017c\u0105danych typ\u00f3w produkt\u00f3w. to lista najbardziej og\u00f3lnych dost\u0119pnych haczyk\u00f3w:<\/p>\n<ul>\n<li><code>woocommerce_product_options_general_product_data<\/code>(&quot;Og\u00f3lny&quot;)<\/li>\n<li><code>woocommerce_product_options_inventory_product_data<\/code>(&quot;Spis&quot;)<\/li>\n<li><code>woocommerce_product_options_shipping<\/code>(&quot;Wysy\u0142ka&quot;)<\/li>\n<li><code>woocommerce_product_options_related<\/code>(\u201ePo\u0142\u0105czone produkty&#8221;)<\/li>\n<li><code>woocommerce_product_options_attributes<\/code>(\u201eAtrybuty&#8221;)<\/li>\n<li><code>woocommerce_product_options_advanced<\/code>(&quot;Zaawansowany&quot;)<\/li>\n<\/ul>\n<h3>Dodawanie danych wej\u015bciowych formularza<\/h3>\n<p>Je\u015bli chodzi o wyprowadzanie danych wej\u015bciowych formularza, mo\u017cesz r\u0119cznie wyprowadzi\u0107 wej\u015bciowy formularz HTML (np <code>&lt;input type=\"text\"...&gt;<\/code>.), ale WooCommerce oferuje proste funkcje do \u0142atwego dodawania p\u00f3l dowolnego typu. Polecam ich u\u017cywa\u0107. Sprawd\u017a tutaj <a href=\"https:\/\/docs.woocommerce.com\/wc-apidocs\/source-function-woocommerce_wp_text_input.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">przegl\u0105d<\/a> wszystkich mo\u017cliwych typ\u00f3w danych wej\u015bciowych WooCommerce i jakie argumenty mo\u017cesz przekaza\u0107, aby kontrolowa\u0107 dane wyj\u015bciowe.<\/p>\n<p>Je\u015bli chodzi o ten samouczek, zamierzam doda\u0107 prosty tekst w zak\u0142adce ekwipunku, aby wpisa\u0107 liczb\u0119 przedmiot\u00f3w w ka\u017cdej paczce. Je\u015bli chodzi o klucz, kt\u00f3ry zostanie zapisany jako Twoja niestandardowa warto\u015b\u0107, zawsze dodaj podkre\u015blenie \u201e_&#8221; przed nim, w moim przypadku b\u0119dzie to \u201e_number_in_package&#8221;:<\/p>\n<pre><code>add_action('woocommerce_product_options_inventory_product_data', function() {\n    woocommerce_wp_text_input([\n            'id' =&gt; '_number_in_package',\n            'label' =&gt; __('Number in package', 'txtdomain'),\n    ]);\n});<\/code><\/pre>\n<p>Zapisz i edytuj produkt. Twoje pole niestandardowe powinno pojawi\u0107 si\u0119 na dole karty Zapasy:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152172-61e4d3f74b757.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152172-61e4d3f74b757.png\" alt=\"Jak doda\u0107 niestandardowe pola i zak\u0142adki do metabox danych produktu WooCommerce wed\u0142ug kodu?\" ><\/a><\/p>\n<p>Niestandardowe pole \u201eNumer w pakiecie&#8221; dodane na dole<\/p>\n<h3>Uwaga dotycz\u0105ca widoczno\u015bci w terenie w zale\u017cno\u015bci od rodzaju produktu<\/h3>\n<p>Metabox danych produktu WooCommerce zawiera wiele skrypt\u00f3w JavaScript, kt\u00f3re ukrywaj\u0105 i wy\u015bwietlaj\u0105 zar\u00f3wno pola, jak i karty\/panele. Mo\u017cesz to \u0142atwo wykorzysta\u0107, je\u015bli chcesz, aby Twoje pole by\u0142o widoczne tylko dla okre\u015blonych typ\u00f3w produkt\u00f3w, podaj\u0105c okre\u015blone nazwy klas w swoim polu.<\/p>\n<p>Za\u0142\u00f3\u017cmy, \u017ce chcesz, aby pole by\u0142o wy\u015bwietlane tylko wtedy, gdy produkt jest produktem typu prostego, lub chcesz, aby by\u0142o ukryte, je\u015bli produkt jest produktem zmiennym. WooCommerce nas\u0142uchuje okre\u015blonych nazw klas, takich jak <code>show_if_&lt;producttype&gt;<\/code>i <code>hide_if_&lt;producttype&gt;<\/code>, i mo\u017cesz \u0142\u0105czy\u0107 wiele klas, aby dostroi\u0107, kiedy twoje pole powinno by\u0107 ukryte lub widoczne.<\/p>\n<p>Na przyk\u0142ad, je\u015bli chc\u0119, aby moje pole by\u0142o widoczne tylko dla prostych produkt\u00f3w; Dodam to w \u201e <code>wrapper_class<\/code>&#8221; do mojego pola wej\u015bciowego:<\/p>\n<pre><code>add_action('woocommerce_product_options_inventory_product_data', function() {\n    woocommerce_wp_text_input([\n        'id' =&gt; '_number_in_package',\n        'label' =&gt; __('Number in package', 'txtdomain'),\n        'wrapper_class' =&gt; 'show_if_simple'\n    ]);\n});<\/code><\/pre>\n<p>Mo\u017cesz r\u00f3wnie\u017c ustawi\u0107 <code>wrapper_class<\/code>np. \u201e <code>show_if_simple show_if_grouped<\/code>&#8222;, aby pole by\u0142o widoczne tylko dla produkt\u00f3w, kt\u00f3re s\u0105 proste lub zgrupowane. Wypr\u00f3buj sam!<\/p>\n<h3>Zapisywanie niestandardowego pola<\/h3>\n<p>W tej chwili wszystko, co wejdziesz na swoje pole, nie jest zapisywane. Zr\u00f3bmy to dalej. Podpinamy si\u0119 <code>woocommerce_process_product_meta<\/code>i zapisujemy warto\u015b\u0107 z globalnego PHP <code>$_POST<\/code>(przesy\u0142anie formularza).<\/p>\n<pre><code>add_action('woocommerce_process_product_meta', function($post_id) {\n    $product = wc_get_product($post_id);\n    $num_package = isset($_POST['_number_in_package'])? $_POST['_number_in_package']: '';\n    $product-&gt;update_meta_data('_number_in_package', sanitize_text_field($num_package));\n    $product-&gt;save();\n});<\/code><\/pre>\n<p>Pozwol\u0119 sobie szybko wyja\u015bni\u0107 powy\u017cszy kod. Mo\u017cesz po prostu zapisa\u0107 pole za pomoc\u0105 <code>update_post_meta()<\/code>, ale w nowszych wersjach WooCommerce obs\u0142uga meta produktu zosta\u0142a znacznie ulepszona. Dop\u00f3ki masz obiekt produktu (kt\u00f3ry otrzymujemy przez wywo\u0142anie <code>wc_get_product()<\/code>z identyfikatorem postu), mo\u017cesz \u0142atwo manipulowa\u0107 dowolnymi informacjami o produkcie w obiekcie, a na koniec wywo\u0142a\u0107 <code>save()<\/code>raz, aby zaktualizowa\u0107 jakiekolwiek zmiany. Jest to bardzo korzystne, zw\u0142aszcza je\u015bli chcesz zapisa\u0107 wiele p\u00f3l \u2013 w takim przypadku nie musisz uruchamia\u0107 operacji bazy danych dla ka\u017cdego pola, tylko ten ostatni raz, kiedy wywo\u0142asz <code>save()<\/code>.<\/p>\n<p>U\u017cyj <code>update_meta_data()<\/code>na obiekcie dla ka\u017cdego metadanych, kt\u00f3re chcesz zapisa\u0107.<\/p>\n<p>Dzi\u0119ki powy\u017cszej funkcji twoje pole powinno teraz zosta\u0107 zapisane, gdy zaktualizujesz je w edycji produktu! Pami\u0119taj r\u00f3wnie\u017c, \u017ce korzystaj\u0105c z funkcji WooCommerce do wyprowadzania pola, nie musisz r\u0119cznie pobiera\u0107 warto\u015bci pola przed jego wyprowadzeniem \u2013 jest to w pe\u0142ni automatyczne.<\/p>\n<h3>Wyprowadzanie w\u0142asnego pola w interfejsie u\u017cytkownika<\/h3>\n<p>Pierwszym krokiem jest ustalenie, kt\u00f3rego haka chcesz u\u017cy\u0107 do wyprowadzenia w\u0142asnego pola. WooCommerce oferuje mn\u00f3stwo dost\u0119pnych hak\u00f3w do kontrolowania dok\u0142adnie tam, gdzie chcesz uzyska\u0107 dane wyj\u015bciowe. Je\u015bli nie masz pewno\u015bci, zajrzyj do <code>plugins\/woocommerce\/templates\/<\/code>tych plik\u00f3w, a wewn\u0105trz tych plik\u00f3w mo\u017cesz \u0142atwo znale\u017a\u0107 odpowiedni hak. Mo\u017cesz r\u00f3wnie\u017c nadpisa\u0107 szablon i doda\u0107 wynik w szablonie, ale zawsze polecam zamiast tego u\u017cywa\u0107 hook\u00f3w.<\/p>\n<p>Je\u015bli chodzi o mnie, chc\u0119, aby moje niestandardowe pole by\u0142o wy\u015bwietlane w jednym produkcie, w meta div \u2013 wzd\u0142u\u017c miejsca, w kt\u00f3rym WooCommerce wy\u015bwietla SKU i kategori\u0119. Do tego u\u017cyj\u0119 haka <code>woocommerce_product_meta_start<\/code>. Wewn\u0105trz haczyk\u00f3w (tak jak w przypadku prawie wszystkich haczyk\u00f3w szablon\u00f3w) mo\u017cesz uzyska\u0107 dost\u0119p do globalnego obiektu post. B\u0119d\u0119 kierowa\u0142 si\u0119 t\u0105 sam\u0105 praktyczn\u0105 zasad\u0105, co przy ratowaniu mojego pola; u\u017cyj <code>get_meta()<\/code>na obiekcie produktu, aby uzyska\u0107 moje niestandardowe pole:<\/p>\n<pre><code>add_action('woocommerce_product_meta_start', function() {\n    global $post;\n    $product = wc_get_product($post-&gt;ID);\n    $num_package = $product-&gt;get_meta('_number_in_package');\n    if (!empty($num_package)) {\n        printf('&lt;div class=\"custom-sku\"&gt;%s: %s&lt;\/div&gt;', __('Number in package', 'txtdomain'), $num_package);\n    }\n});<\/code><\/pre>\n<h2>Dodanie niestandardowej zak\u0142adki i panelu do metabox danych produktu<\/h2>\n<p>Je\u015bli chcesz doda\u0107 kolekcj\u0119 p\u00f3l niestandardowych, kt\u00f3re logicznie nale\u017c\u0105 do siebie, dobrym pomys\u0142em mo\u017ce by\u0107 pogrupowanie ich na karcie niestandardowej. Aby doda\u0107 niestandardow\u0105 kart\u0119 do metaboxu Product data, musimy podpi\u0105\u0107 si\u0119 pod filtr, aby doda\u0107 sam\u0105 kart\u0119, oraz zaczep do wyprowadzania zawarto\u015bci panelu. Na koniec nadal musimy doda\u0107 ten sam haczyk, co powy\u017cej, aby zapisa\u0107 nasze pola.<\/p>\n<p>Na przyk\u0142ad zamierzam doda\u0107 niestandardowy panel o nazwie \u201eDodatkowe informacje&#8221;, w kt\u00f3rym chc\u0119 doda\u0107 wprowadzanie tekstu, pole wyboru i wprowadzanie liczb.<\/p>\n<p>Najpierw filtrujemy <code>woocommerce_product_data_tabs<\/code>i dodajemy nasz\u0105 kart\u0119 do jej tablicy.<\/p>\n<pre><code>add_filter('woocommerce_product_data_tabs', function($tabs) {\n    $tabs['additional_info'] = [\n        'label' =&gt; __('Additional info', 'txtdomain'),\n        'target' =&gt; 'additional_product_data',\n        'class' =&gt; ['hide_if_external'],\n        'priority' =&gt; 25\n    ];\n    return $tabs;\n});<\/code><\/pre>\n<p>Mo\u017cemy tu przedstawi\u0107 kilka przydatnych argument\u00f3w. Mo\u017cesz na przyk\u0142ad u\u017cy\u0107 \u201e <code>class<\/code>&#8222;, aby kontrolowa\u0107 widoczno\u015b\u0107 zak\u0142adki w zale\u017cno\u015bci od typu produktu. Je\u015bli go przegapi\u0142e\u015b, sprawd\u017a sekcj\u0119 o widoczno\u015bci pola <a href=\"#field-visibility\">wspomnian\u0105 powy\u017cej<\/a>. Pami\u0119taj jednak, \u017ce na kartach musisz poda\u0107 klasy jako tablic\u0119, a nie ci\u0105g. Mo\u017cesz r\u00f3wnie\u017c poda\u0107 \u201e <code>priority<\/code>&#8222;, aby zdecydowa\u0107, gdzie ma si\u0119 pojawi\u0107 Twoja karta. U\u017cycie np. 25 spowoduje umieszczenie zak\u0142adki zaraz po \u201eInwentarz&#8221;.<\/p>\n<p>Domy\u015blnie twoja karta b\u0119dzie wy\u015bwietlana z ikon\u0105 klucza. Niestety nie ma (jak na razie) mo\u017cliwo\u015bci kontrolowania go przez filtr. Je\u015bli jest to dla Ciebie wa\u017cne, mo\u017cesz doda\u0107 administracyjny CSS i doda\u0107 inn\u0105 klas\u0119 do swojej karty. <a href=\"https:\/\/github.com\/woocommerce\/woocommerce-icons\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Oto przegl\u0105d<\/a> dost\u0119pnych ikon w WooCommerce.<\/p>\n<h3>Wyj\u015bcie panelu<\/h3>\n<p>Nast\u0119pnym krokiem jest podpi\u0119cie si\u0119 <code>woocommerce_product_data_panels<\/code>i wyprowadzenie zawarto\u015bci panelu. Wa\u017cn\u0105 uwag\u0105 jest tutaj rozpocz\u0119cie wyj\u015bcia z <code>div<\/code>atrybutem <code>id<\/code>o tej samej nazwie, kt\u00f3r\u0105 poda\u0142e\u015b jako klucz w kartach (w moim przypadku &#8217; <code>additional_info<\/code>&#8217;). Je\u015bli chodzi o tre\u015b\u0107, to zale\u017cy od Ciebie \u2013 mo\u017cesz doda\u0107 dowolny kod HTML, ale polecam korzystanie z funkcji WooCommerce do wy\u015bwietlania p\u00f3l formularzy. Te same korzy\u015bci zwi\u0105zane z ukrywaniem lub pokazywaniem p\u00f3l r\u00f3wnie\u017c b\u0119d\u0105 dzia\u0142a\u0107 tutaj.<\/p>\n<pre><code>add_action('woocommerce_product_data_panels', function() {\n    ?&gt;&lt;div id=\"additional_product_data\" class=\"panel woocommerce_options_panel hidden\"&gt;&lt;?php\n\u00a0\n    woocommerce_wp_text_input([\n        'id' =&gt; '_dummy_text_input',\n        'label' =&gt; __('Dummy text input', 'txtdomain'),\n        'wrapper_class' =&gt; 'show_if_simple',\n    ]);\n    woocommerce_wp_checkbox([\n        'id' =&gt; '_dummy_checkbox',\n        'label' =&gt; __('Dummy checkbox', 'txtdomain'),\n        'wrapper_class' =&gt; 'hide_if_grouped',\n    ]);\n    woocommerce_wp_text_input([\n        'id' =&gt; '_dummy_number_input',\n        'label' =&gt; __('Dummy number input', 'txtdomain'),\n        'type' =&gt; 'number',\n        'custom_attributes' =&gt; [\n            'step' =&gt; '1',\n            'min' =&gt; '0'\n        ]\n    ]);\n    ?&gt;&lt;\/div&gt;&lt;?php\n});<\/code><\/pre>\n<p>Po zapisaniu powiniene\u015b teraz zobaczy\u0107 zak\u0142adk\u0119 i jej zawarto\u015b\u0107 w Metabox danych produktu (chyba \u017ce produkt jest oczywi\u015bcie produktem zewn\u0119trznym).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152172-61e4d3f80e5c5.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152172-61e4d3f80e5c5.png\" alt=\"Jak doda\u0107 niestandardowe pola i zak\u0142adki do metabox danych produktu WooCommerce wed\u0142ug kodu?\" ><\/a><\/p>\n<p>Pozostaje tylko zapisa\u0107 dane wprowadzone w polach niestandardowych, a do tego u\u017cywamy tego samego procesu, co powy\u017cej:<\/p>\n<pre><code>add_action('woocommerce_process_product_meta', function($post_id) {\n    $product = wc_get_product($post_id);\n    $product-&gt;update_meta_data('_dummy_text_input', sanitize_text_field($_POST['_dummy_text_input']));\n\u00a0\n    $dummy_checkbox = isset($_POST['_dummy_checkbox'])? 'yes': '';\n    $product-&gt;update_meta_data('_dummy_checkbox', $dummy_checkbox);\n\u00a0\n    $product-&gt;update_meta_data('_dummy_number_input', sanitize_text_field($_POST['_dummy_number_input']));\n    $product-&gt;save();\n});<\/code><\/pre>\n<p>Uwaga: W WooCommerce istnieje og\u00f3lna zasada, zgodnie z kt\u00f3r\u0105 wszystkie pola wyboru s\u0105 zapisywane jako \u201e <code>yes<\/code>&#8222;, je\u015bli s\u0105 zaznaczone, lub jako pusty ci\u0105g, je\u015bli nie s\u0105 zaznaczone. Post\u0119puj\u0105c zgodnie z regu\u0142\u0105 WooCommerce i zapisuj\u0105c moje zaznaczone pole wyboru jako \u201e <code>yes<\/code>&#8222;, zapewnia to, \u017ce moje <code>woocommerce_wp_checkbox()<\/code>dzia\u0142a zgodnie z przeznaczeniem, gdy pobiera bie\u017c\u0105c\u0105 warto\u015b\u0107 mojego pola.<\/p>\n<h2>Wniosek<\/h2>\n<p>W tym po\u015bcie poka\u017c\u0119, jak doda\u0107 niestandardowe pola do metaboxa danych produkt\u00f3w WooCommerce, jak je zapisa\u0107, jak kontrolowa\u0107 ich widoczno\u015b\u0107 i prosty przyk\u0142ad wyprowadzania pola w interfejsie u\u017cytkownika. Pokaza\u0142em r\u00f3wnie\u017c, jak doda\u0107 niestandardow\u0105 kart\u0119 do metaboxa i doda\u0107 tam swoje pola. Mam nadziej\u0119, \u017ce pomog\u0142o to w samodzielnej personalizacji WooCommerce!<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W tym po\u015bcie dowiemy si\u0119, jak doda\u0107 niestandardowe pola i zak\u0142adki meta do metaboxa danych produktu WordPress WooCommerce z kodem.<\/p>\n","protected":false},"author":1,"featured_media":224911,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[897,721,721,897,1110,815,845,845,856,856,866,866,815],"tags":[1169],"class_list":["post-233807","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kod","category-deweloper","category-n-a","category-wtyczki","category-samouczki","category-woocommerce-7","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=233807"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/233807\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224911"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=233807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=233807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=233807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}