{"id":28034,"date":"2021-05-19T12:21:00","date_gmt":"2021-05-19T09:21:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28034"},"modified":"2021-10-18T03:43:52","modified_gmt":"2021-10-18T00:43:52","slug":"szybki-przewodnik-po-woocommerce-rest-api","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pl\/szybki-przewodnik-po-woocommerce-rest-api\/","title":{"rendered":"Szybki przewodnik po WooCommerce REST API"},"content":{"rendered":"<p>Czy chcesz wej\u015b\u0107 w interakcj\u0119 z API REST WooCommerce? WooCommerce zapewnia interfejs API REST, kt\u00f3ry dostarcza dane w czasie rzeczywistym z zaplecza, kt\u00f3re mo\u017cna umie\u015bci\u0107 w dowolnym miejscu w zewn\u0119trznej aplikacji. Za po\u015brednictwem interfejsu API REST mo\u017cna zarz\u0105dza\u0107 danymi WooCommerce, docieraj\u0105c do punkt\u00f3w ko\u0144cowych. W tym artykule dowiemy si\u0119, jak korzysta\u0107 z WooCommerce REST API i wysy\u0142a\u0107 \u017c\u0105dania HTTP do WooCommerce.<\/p>\n<p>Je\u015bli chcesz zbudowa\u0107 w\u0142asny sklep, mo\u017cesz u\u017cy\u0107 WooCommerce jako zaplecza do zarz\u0105dzania Twoimi produktami, zdj\u0119ciami produkt\u00f3w, galeri\u0105 itp. A nast\u0119pnie korzystaj\u0105c z REST API, pobierz dane produktu i wy\u015bwietl je w zewn\u0119trznej aplikacji. WooCommerce udost\u0119pnia <a href=\"https:\/\/woocommerce.github.io\/woocommerce-rest-api-docs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentacj\u0119 API REST<\/a> do interakcji z backendem. Tutaj otrzymasz szczeg\u00f3\u0142owe informacje o wszystkim, takich jak produkty, klienci, zam\u00f3wienia, podatki itp. W tym artykule b\u0119dziemy wchodzi\u0107 w interakcje z punktami ko\u0144cowymi produktu. W podobny spos\u00f3b mo\u017cesz zintegrowa\u0107 inne opcje, takie jak klienci, zam\u00f3wienia itp.<\/p>\n<h3>Uzyskaj klucz klienta i tajemnic\u0119 klienta<\/h3>\n<p>Aby rozpocz\u0105\u0107 korzystanie z WooCommerce REST API, musisz najpierw uzyska\u0107 klucz klienta i tajny klucz klienta. Klucze te s\u0142u\u017c\u0105 do identyfikacji sklepu i s\u0105 niezb\u0119dne przy wywo\u0142aniu API do WooCommerce.<\/p>\n<p>Musisz zainstalowa\u0107 WooCommerce na swoim zapleczu WordPress. Nast\u0119pnie <strong>przejd\u017a<\/strong> do strony <strong>WooCommerce-&gt;Ustawienia<\/strong>. Kliknij na zak\u0142adk\u0119 Zaawansowane, a nast\u0119pnie na link REST API.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-6082042fde2a8.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-20552-6082042fde2a8.png\" alt=\"Szybki przewodnik po WooCommerce REST API\" ><\/a><\/p>\n<p>Na tej stronie kliknij przycisk \u201eUtw\u00f3rz klucz API&quot;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-60820430658a2.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-20552-60820430658a2.png\" alt=\"Szybki przewodnik po WooCommerce REST API\" ><\/a><\/p>\n<p>Wprowad\u017a opis, wybierz uprawnienia \u201eOdczyt\/zapis&#8221; i naci\u015bnij przycisk Generuj klucz API. Mo\u017cesz r\u00f3wnie\u017c wybra\u0107 uprawnienie do odczytu. To zale\u017cy od Twoich wymaga\u0144. Je\u015bli potrzebujesz tylko odczyta\u0107 dane z WooCommerce, wybierz opcj\u0119 \u201eCzytaj&#8221;. A je\u015bli chcesz wykonywa\u0107 zar\u00f3wno operacje odczytu, jak i zapisu, twoj\u0105 opcj\u0105 b\u0119dzie \u201eOdczyt\/zapis&#8221;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-60820430e1fa8.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-20552-60820430e1fa8.png\" alt=\"Szybki przewodnik po WooCommerce REST API\" ><\/a><\/p>\n<p>Skopiuj klucz klienta i tajny klucz klienta, kt\u00f3re b\u0119d\u0105 wymagane podczas wywo\u0142ywania API.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20552-60820430e1fa8.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-20552-60820430e1fa8.png\" alt=\"Szybki przewodnik po WooCommerce REST API\" ><\/a><\/p>\n<h3>Wejd\u017a w interakcj\u0119 z WooCommerce REST API<\/h3>\n<p>Gdy b\u0119dziesz gotowy z kluczem klienta i tajnym kluczem klienta, mo\u017cemy zacz\u0105\u0107 od kodu, kt\u00f3ry wchodzi w interakcj\u0119 z WooCommerce. Poniewa\u017c musimy wysy\u0142a\u0107 \u017c\u0105dania HTTP, zainstaluj bibliotek\u0119 Guzzle za pomoc\u0105 poni\u017cszego polecenia.<\/p>\n<pre><code>composer require guzzlehttp\/guzzle<\/code><\/pre>\n<p><a href=\"https:\/\/artisansweb.net\/use-guzzle-php-http-client-sending-http-requests\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a>Guzzle to klient PHP HTTP, kt\u00f3ry u\u0142atwia wysy\u0142anie \u017c\u0105da\u0144 HTTP i banalne do integracji z us\u0142ugami internetowymi.<\/p>\n<p>Teraz we\u017amy kilka punkt\u00f3w ko\u0144cowych, takich jak pobierz wszystkie produkty, pobierz jeden produkt, zaktualizuj produkt i zintegruj go.<\/p>\n<h4>Pobierz produkty<\/h4>\n<p>Podczas wywo\u0142ywania punkt\u00f3w ko\u0144cowych API WooCommerce musisz ustawi\u0107 nag\u0142\u00f3wek autoryzacji, kt\u00f3ry jest zakodowanym w base64 \u0142a\u0144cuchem klucza klienta i tajnego klucza klienta.<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\n\u00a0\u00a0\nuse GuzzleHttpClient;\n\u00a0\ndefine('WC_CONSUMER_KEY', 'PASTE_CONSUMER_KEY');\ndefine('WC_CONSUMER_SECRET', 'PASTE_CONSUMER_SECRET');\n\u00a0\u00a0\n$client = new Client([\n\u00a0\u00a0\u00a0\u00a0\/\/ Base URI is used with relative requests\n\u00a0\u00a0\u00a0\u00a0'base_uri' =&gt; 'YOUR_DOMAIN_BASE_URL',\n]);\n\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('GET', '\/wp-json\/wc\/v3\/products', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'headers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Basic \". base64_encode(WC_CONSUMER_KEY.':'.WC_CONSUMER_SECRET)\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'query' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'per_page' =&gt; 18,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'verify' =&gt; false, \/\/only needed if you are facing SSL certificate issue\n\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$body = $response-&gt;getBody();\n\u00a0\u00a0\u00a0\u00a0$arr_body = json_decode($body);\n\u00a0\u00a0\u00a0\u00a0print_r($arr_body);\n} catch (Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage();\n}<\/code><\/pre>\n<p>W powy\u017cszym kodzie nazwa\u0142em punkt ko\u0144cowy, kt\u00f3ry podaje list\u0119 produkt\u00f3w. Tutaj przekaza\u0142em 18 jako warto\u015b\u0107 \u201eper_page&#8221;, kt\u00f3ra w odpowiedzi da 18 danych produktu. Mo\u017cesz przekaza\u0107 t\u0119 warto\u015b\u0107 zgodnie z wymaganiami. Pami\u0119taj, aby zast\u0105pi\u0107 symbole zast\u0119pcze rzeczywistymi warto\u015bciami przed trafieniem do punktu ko\u0144cowego.<\/p>\n<h4>Zdob\u0105d\u017a jeden produkt<\/h4>\n<p>Je\u015bli chcesz pobra\u0107 dane pojedynczego produktu, Tw\u00f3j punkt ko\u0144cowy b\u0119dzie nast\u0119puj\u0105cy.<\/p>\n<pre><code>$response = $client-&gt;request('GET', '\/wp-json\/wc\/v3\/products\/PRODUCT_ID_HERE', [\n\u00a0\u00a0\u00a0\u00a0'headers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Basic \". base64_encode(WC_CONSUMER_KEY.':'.WC_CONSUMER_SECRET)\n\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0'verify' =&gt; false,\n]);<\/code><\/pre>\n<h4>Zaktualizuj produkt<\/h4>\n<p>Mo\u017cesz zaktualizowa\u0107 produkt, wysy\u0142aj\u0105c \u017c\u0105danie PUT do punktu ko\u0144cowego API. Za\u0142\u00f3\u017cmy, \u017ce chcesz zaktualizowa\u0107 regular_price swojego produktu.<\/p>\n<pre><code>$response = $client-&gt;request('PUT', '\/wp-json\/wc\/v3\/products\/PRODUCT_ID_HERE', [\n\u00a0\u00a0\u00a0\u00a0'headers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"Authorization\" =&gt; \"Basic \". base64_encode(WC_CONSUMER_KEY.':'.WC_CONSUMER_SECRET)\n\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0'json' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'regular_price' =&gt; '12.20',\n\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0'verify' =&gt; false,\n]);<\/code><\/pre>\n<p>Oto kilka podstawowych po\u0142\u0105cze\u0144. W ten sam spos\u00f3b u\u017cytkownik mo\u017ce wysy\u0142a\u0107 zapytania HTTP dla Klient\u00f3w, Zam\u00f3wienia, Kupony itp. Wi\u0119cej na ten temat mo\u017cna przeczyta\u0107 w ich <a href=\"https:\/\/woocommerce.github.io\/woocommerce-rest-api-docs\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">oficjalnej dokumentacji<\/a>.<\/p>\n<h3>Wejd\u017a w interakcj\u0119 z API REST WooCommerce za pomoc\u0105 JavaScript<\/h3>\n<p>WooCommerce wydaje w\u0142asn\u0105 <a href=\"https:\/\/www.npmjs.com\/package\/@woocommerce\/woocommerce-rest-api\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">bibliotek\u0119 JavaScript,<\/a> kt\u00f3ra jest przydatna do wysy\u0142ania wywo\u0142a\u0144 API do WooCommerce z frameworka JavaScript. Za\u0142\u00f3\u017cmy, \u017ce chcesz wchodzi\u0107 w interakcj\u0119 z REST API z aplikacji opartej na React.<\/p>\n<p>W takim przypadku zainstaluj bibliotek\u0119 \u201e@woocommerce\/woocommerce-rest-api&#8221; za pomoc\u0105 polecenia:<\/p>\n<pre><code>npm install --save @woocommerce\/woocommerce-rest-api<\/code><\/pre>\n<p>Nast\u0119pnie w swoim komponencie React mo\u017cesz uzyska\u0107 list\u0119 produkt\u00f3w za pomoc\u0105 poni\u017cszego kodu.<\/p>\n<pre><code>import React from 'react';\nimport ReactDOM from 'react-dom';\nimport WooCommerceRestApi from \"@woocommerce\/woocommerce-rest-api\";\n\u00a0\nclass ProductsComponent extends React.Component {\n\u00a0\u00a0constructor(props) {\n\u00a0\u00a0\u00a0\u00a0super(props);\n\u00a0\u00a0\u00a0\u00a0this.state = {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0products: []\n\u00a0\u00a0\u00a0\u00a0};\n\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0componentDidMount() {\n\u00a0\u00a0\u00a0\u00a0const api = new WooCommerceRestApi({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0url: \"YOUR_DOMAIN_BASE_URL\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0consumerKey: \"PASTE_CONSUMER_KEY\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0consumerSecret: \"PASTE_CONSUMER_SECRET\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0version: \"wc\/v3\"\n\u00a0\u00a0\u00a0\u00a0});\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/\/ List products\n\u00a0\u00a0\u00a0\u00a0api.get(\"products\", {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0per_page: 18, \/\/ 18 products per page\n\u00a0\u00a0\u00a0\u00a0})\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.then((response) =&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Successful request\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0this.setState({\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0products: response.data\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.catch((error) =&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Invalid request, for 4xx and 5xx statuses\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0})\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0.finally(() =&gt; {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Always executed.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0render() {\n\u00a0\u00a0\u00a0\u00a0return (\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;div&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;h2&gt;Products&lt;\/h2&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;ul&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{this.state.products.map(product =&gt; (\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;li key={product.id}&gt;{product.name} - ${product.regular_price}&lt;\/li&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0))}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/ul&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0}\n}\n\u00a0\nconst element = &lt;ProductsComponent&gt;&lt;\/ProductsComponent&gt;\n\u00a0\nReactDOM.render(element, document.getElementById(\"root\"));<\/code><\/pre>\n<p>Tutaj drukuj\u0119 list\u0119 nazw produkt\u00f3w oraz cen\u0119 produktu. U\u017cytkownik mo\u017ce r\u00f3wnie\u017c wydrukowa\u0107 inne dane. Je\u015bli chcesz zobaczy\u0107 wszystkie dane w konsoli, zarejestruj response.data w metodzie success. Podobnie jak w powy\u017cszym przyk\u0142adzie, mo\u017cesz wysy\u0142a\u0107 inne \u017c\u0105dania HTTP z aplikacji React.<\/p>\n<h3>Wniosek<\/h3>\n<p>W tym samouczku uczymy si\u0119 wywo\u0142ywania API REST WooCommerce za pomoc\u0105 PHP i JavaScript. Przeszli\u015bmy przez kilka punkt\u00f3w ko\u0144cowych API WooCommerce. U\u017cytkownik mo\u017ce bawi\u0107 si\u0119 z drugim punktem ko\u0144cowym post\u0119puj\u0105c zgodnie z dokumentacj\u0105 i wysy\u0142aj\u0105c wymagane \u017c\u0105dania HTTP.<\/p>\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>Je\u015bli chcesz zbudowa\u0107 sklep internetowy, WooCommerce jest jednym z najlepszych wybor\u00f3w. Mo\u017cemy wykorzysta\u0107 WooCommerce REST API i zbudowa\u0107 sklep w dowolnym j\u0119zyku.<\/p>\n","protected":false},"author":1,"featured_media":22224,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[316,501,277,612],"tags":[847],"class_list":["post-28034","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-baza-danych","category-laravel","category-php-8","category-uncategorized-8","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/28034","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=28034"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/posts\/28034\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media\/22224"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/media?parent=28034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/categories?post=28034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pl\/wp-json\/wp\/v2\/tags?post=28034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}