Wp wc product create

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

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.

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"
    	}]'