Wp wc product create
Productimport & afbeeldingen
Hoe specificeer je afbeeldingen bij een product?
Dit werkt in ieder geval niet: --images="Widget-wiel-40x50x10-Smurf-wheel-rad.jpg"
. Uitleg (zonder verdere toelichting, helaas) [1]:
Images is an array in which element can be set by specifying its index: * images * images.size * images.0.id * images.0.created_at * images.0.updated_at * images.0.src * images.0.title * images.0.alt * images.0.position
Argumenten en syntaxis van de WC-CLI zijn afkomstig van de REST-API. Dit is wat de REST-API-documentatie omtrent images zegt [2]:
Attribute Type Description ----------------- --------- ----------------------------------------------------------------------- id integer Image ID. date_created date-time The date the image was created, in the site's timezone. READ-ONLY date_created_gmt date-time The date the image was created, as GMT. READ-ONLY date_modified date-time The date the image was last modified, in the site's timezone. READ-ONLY date_modified_gmt date-time The date the image was last modified, as GMT. READ-ONLY src string Image URL name string Image name alt string Image alternative text
Simpel voorbeeld
cd /var/www/rt_tmp.dvb wp wc product create \ --name="Widget-wiel 40x50x10" \ --description="Widget-wiel voor Smurf-systemen. Afmetingen: ..." \ --short_description="Widget-wiel met afmetingen 40x50x10 (mm) voor Smurf-systemen" \ --sku="wheel_40x050x10_5" \ --regular_price="7.5" \ --user="Jeroen Strompf" \ --images='[{"src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg"}]'
Meerdere afbeeldingen + inspringen
cd /var/www/rt_tmp.dvb wp wc product create \ --name="Widget-wiel 40x50x10" \ --description="Widget-wiel voor Smurf-systemen. Afmetingen: ..." \ --short_description="Widget-wiel met afmetingen 40x50x10 (mm) voor Smurf-systemen" \ --sku="wheel_40x050x10_11" \ --regular_price="7.5" \ --user="Jeroen Strompf" \ --images='[ { "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg" }, { "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg" }]'
- Attributen en waardes zijn gescheiden met een ":"
- Numerieke waardes hoeven niet binnen dubbele haakjes
- Records worden van elkaar gescheiden door { en } (en een komma)
- De array als geheel is omhuld door [ en ]
- De apostrophes rondom [ en ] kun je niet weglaten.
Extreem inspringen
Dit is ongeveer de limiet:
cd /var/www/rt_tmp.dvb wp wc product create \ --name="Widget-wiel 40x50x10" \ --description="Widget-wiel voor Smurf-systemen. Afmetingen: ..." \ --short_description="Widget-wiel met afmetingen 40x50x10 (mm) voor Smurf-systemen" \ --sku="wheel_40x050x10_14" \ --regular_price="7.5" \ --user="Jeroen Strompf" \ --images='[ { "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg" }, { "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg" } ]'
Meerdere attributen
cd /var/www/rt_tmp.dvb wp wc product create \ --name="Widget-wiel 40x50x10" \ --description="Widget-wiel voor Smurf-systemen. Afmetingen: ..." \ --short_description="Widget-wiel met afmetingen 40x50x10 (mm) voor Smurf-systemen" \ --sku="wheel_40x050x10_18" \ --regular_price="7.5" \ --user="Jeroen Strompf" \ --images='[ { "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg", "name": "Voorkant van het t-shirt", "alt": "Voorkant van t-shirt met SKU 40x50_01, te koop op example.com" }, { "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg", "name": "Achterkant van het t-shirt" } ]'
Als je de komma na zo'n eigenschap-waarde-paar weglaat, weet de interpreter niet meer waar zo'n paar begint of eindigt. Je krijgt geen foutmeldingen, maar ook geen afbeeldingen.
Afbeeldingen worden gedupliceerd
Als je zo'n script als hierboven opnieuw uitvoert, maar nu met een andere SKU, dan krijg je uiteraard een tweede product. Helaas wordt de afbeelding daarbij opnieuw geïmporteerd (met een numerieke suffix aan de naam). Da's geen enkel probleem: In de praktijk zak er heus wel iets andere zijn aan dat andere product, en daarom zal de titel van de afbeelding ook anders zijn (dus meer geoptimaliseerd!)
Productimport & taal
Hoe specificeer je de taal waarin een object is geschreven bij import in meertalige websites? Waar zou je zoiets specificeren? Binnen de WC-CLI? Binnen de taalplugin-CLI? Ergens tussenin?
- Ik gebruik de CLI. Niet de REST-API
- De gebruikte taalplugin is Polylang (PLL) en Polylang for WooCommerce
- Polylang lijkt deze mogelijkheid alleen te bieden in Polylang Pro [3]. Dit is hoe je de taal zou specificeren: ‘lang’: contains the language code (generally 2 letter ISO code) of the queried post or term.. Ik heb de controle hierop verwijdert uit de module [4] (
wp-content/plugins/polylang/frontend/frontend.php
- regels 85-93), maar dit maakt geen verschil: Let op: Ik gebruik de CLI en niet de REST-API wp wc product create
heeft geen standaardveld voor taal. Wellicht dat deze opties kunnen helpen:
[--attributes=<attributes>] List of attributes. [--default_attributes=<default_attributes>] Defaults variation attributes.
- Iemand heeft een eigen CLI geschreven voor PLL: https://github.com/diggy/polylang-cli
Probeersel
Dit werkt helaas niet ("EN" ipv. "en" maakt ook niet uit). Producten worden nog steeds geïmporteerd in de standaardtaal:
#!/bin/bash cd /var/www/rt_tmp.dvb wp wc product create \ --sku="test-03" \ --user="Jeroen Strompf" \ --attributes='[{"lang": "en"}]'
Metadata
meta_data is een array [5]. Het veld heet meta_data
. Er is niet zoiets als 'product-meta-data':
Attribute Type Description --------- ------- ------ id integer Meta ID. READ-ONLY key string Meta key value string Meta value
Ik krijg het helaas nog niet aan de praat:
#!/bin/bash cd /var/www/rt_tmp.dvb wp wc product create \ --sku="test-05" \ --name="test-name" \ --description="Widget-wiel voor Smurf-systemen. Afmetingen: ..." \ --short_description="Widget-wiel met afmetingen 40x50x10 (mm) voor Smurf-systemen" \ --regular_price="7.5" \ --user="Jeroen Strompf" \ --images='[{ "src": "http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg", "name": "Voorkant van het t-shirt", "alt": "Voorkant van t-shirt met SKU 40x50_01, te koop op example.com" }]' \ --meta_data='[ { "description": "Dit is de meta-data-description", "meta_description": "Dit is de meta-data-description", "keywords": "Dit zijn de keywords-metags", "seo_title" "SEO-titel" }]' \ --attributes='[ { "description": "Dit is de meta-data-description", "meta_description": "Dit is de meta-data-description", "keywords": "Dit zijn de keywords-metags", "seo_title" "SEO-titel" }]'