Bulkimport (WordPress): verschil tussen versies
(→$wpdb) |
|||
Regel 20: | Regel 20: | ||
# Db.bulk | # Db.bulk | ||
# WP-CLI | # WP-CLI | ||
− | |||
− | |||
− | |||
=== Db.bulk === | === Db.bulk === |
Versie van 20 apr 2019 11:42
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):
- REST-API
- WP-CLI
- Db.bulk
Mijn shortlist (16 april 2019) - Oftewel, hoe snel kunnen dingen veranderen:
- PHP-API → Waarschijnlijk gebruik ik voortaan uitsluitend dit
- Db.bulk
- 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.
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.
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 afbeeldingen → Wp 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 ook
- Afbeeldingen & API's (WordPress)
- Categorieën (WordPress)
- Db.bulk (WordPress)
- XML-RPC, WordPress & Python
- WC-CLI (WordPress)
- WooCommerce CSV Import (plugin, Allaerd.org)
- WordPress API
- WordPress REST-API
- Wp media import (WP-CLI)