Bulkimport (WordPress): verschil tussen versies

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen
Regel 20: Regel 20:
 
# Db.bulk
 
# Db.bulk
 
# WP-CLI
 
# WP-CLI
 
=== PHP-API ===
 
 
  
 
=== Db.bulk ===
 
=== Db.bulk ===

Versie van 20 apr 2019 11:42

Datamodel & productgegevens: Een product is een post. Die staan in tabel wp_posts. Ze hebben een post-ID, genaamd ID. Additionele zaken staan in tabel wp_postmeta. Hier zie je hoe voor post 1840 de waardes van additionele velden worden onthouden
Afbeelding-metadata - Velden: Het gaat om de velden URL (bestandsnaam), Title, Caption, Alt text en misschien Description
Datamodel & afbeelding-metadata: De velden Title, Caption en Description worden opgeslagen in tabel wp_posts
Datamodel & afbeelding-metadata: Het veld Alt text wordt opgeslagen in tabel wp_postmeta


Inventaris - Non-plugins (algemeen)

Het ligt voor de hand om te denken in benodigde plugins, maar er is een verbazend grote hoeveelheid aan alternatieve oplossingen beschikbaar, die voor mij ook nog eens veel geschikter vind dan plugins.

Mijn shortlist (begin april 2019):

  1. REST-API
  2. WP-CLI
  3. Db.bulk

Mijn shortlist (16 april 2019) - Oftewel, hoe snel kunnen dingen veranderen:

  1. PHP-API → Waarschijnlijk gebruik ik voortaan uitsluitend dit
  2. Db.bulk
  3. WP-CLI

Db.bulk

Ik vind het altijd aanlokkelijk om dit soort problemen op te lossen door zelf iets te programmeren op db-niveau, omdat ik dan veel controle heb. Keer op keer stuit ik echter op een paar flinke problemen:

  • Complex & tijdrovend: Reverse-engineeren van het datamodel kost veel tijd. Programmeren kost al snel veel tijd, vooral als je te maken krijgt met subrecords, en dat is vaak nogal snel
  • Niet-robuust: Op deze manier ga ik voorbij aan de API met alle checks en controles van dien. Een kleine fout, en ik richt een ravage aan. En als WordPress of een relevante plugin iets verandert aan het datamodel, is dat ook tricky.

En toch: Nadat ik me zo'n 10 uur in REST-API heb verdiept, wordt deze optie alweer een stuk aantrekkelijk: Want ik heb ten minste controle. Met andere manieren moet ik me nogal aanpassen aan de interface, en dat kost veel tijd.

Db.bulk (WordPress)

REST-API

De WordPress REST-API gebruikt JSON en is taalonafhankelijk. Het is bedoeld voor interactie met een site over HTTP. De REST-API is om meerdere redenen een interessante optie:

  • Compleet: Ik heb de indruk dat deze API 'compleet' is. Oftewel: Je kunt er 'alles' mee bepalen rondom WordPress Core. Hetzelfde geldt voor WooCommerce. Vermoedelijk zijn er zat plugins die niet gedekt worden door de REST-API, maar dat is van minder belang
  • Python: Taalonafhankelijk, dus ik kan vanuit Python werken.

Belangrijkste nadelen:

  • Remote: Dit protocol gaat over HTTP en vereist authenticatie. Ook voor een locale ontwikkelsite
  • JSON: Weer een nieuwe taal/protocol om te leren.

WordPress REST-API

XML-RPC

WordPress beschikt over een XML-RPC-interface, een taal-onafhankelijke API. Er bestaan clients in verschillende talen, waaronder Python. In theorie kan ik op deze manier vanuit Python gebruik maken van de API, maar in de praktijk valt dit tegen: De mogelijkheden van de 'core-API' zijn beperkt, en de beschikbaarheid van XML-RPC-API's voor andere plugins (bv. WooCommerce), is beperkt → XML-RPC, WordPress & Python

WP-CLI

WordPress heeft een eigen CLI (command line interface), waar je verbazend veel mee kunt (maar niet alles!). Diverse plugins hebben hun eigen uitbreiding op de CLI.

Mogelijkheden voor bulkimport

  • Posts: Weet ik niet
  • Afbeelding-metadata: Het lijkt erop (april 2019) dat de WP-CLI meerdere oplossingen heeft voor metadata van afbeeldingenWp media import (WP-CLI) & WC-CLI (WordPress)
  • Productgegevens: Het lijkt erop (april 2019) dat WooCommerce' eigen CLI (WC-CLI) goed productgegevens kan importeren, inclusief afbeeldingen en bijbehorende metadata. Het integreert ook goed met mijn bestaande werkwijze, itt. gebruik van plugins → WC-CLI (WordPress)

Voordelen:

  • Eenvoudig
  • Vanuit Bash-scripts, en dat is een manier van werken die ik al jaren hanteer.

Nadelen:

  • Niet compleet: Het lijkt z'n beperkingen te hebben
  • Incomplete documentatie: De documentatie voor WC-CLI (WooCommerce-CLI) lijkt nogal beperkt te zijn

PHP-API

Algemeen

Afbeeldingen

Zie Afbeeldingen & API's (WordPress).

Taxonomieën

Zie Taxonomieën (WordPress)

Zie ook

Bronnen

Productgegevens