Klonen & vertalen - Casus april 2021 (WordPress)

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Eindelijk aan de slag: We gaan example.com klonen naar example.ch en vertalen naar het Frans. Alle vertaalscripts zijn klaar, alle routines zijn voldoende getest en de bronsite is voldoende bijgewerkt (dat vergde enige coördinatie, want de bronsite is voortdurend in ontwikkeling).

Context

  • Zowel de bronsite als de doelsite, bevinden zich binnen hetzelfde CloudWays-account
  • Zaken zoals domeinnaamregistratie, DNS-entries en email, gebeuren binnen een TransIP-account

De vertaal-werkzaamheden vinden plaats op een aparte ontwikkelserver:

  • Sommige routines zijn verbazend rekenintensief en moeten uren achtereen ongestort hun werk kunnen doen: Hergenereren van alle afbeeldingen via het WP-CLI-commando wp image recreate kost op m'n laptop bv. zo'n zes uur. Ik vind het niet handig om zulke intensieve taken op een productieserver te doen. Daarnaast is sommige code redelijk experimenteel en een foutje is zo gemaakt. Temeer daar je op CloudWays niet zelf de namen van databases kunt bepalen en ik maar al te gemakkelijk een database genaamd fsdfdsfsdfs, kan verwarren met een database genaamd fgdgdgdddd. Ik vind het ook niet handig om routines die uren kosten, op m'n laptop te doen: Altijd lastig om daar rekening mee te houden
  • De site is zo'n 2GB groot. Down- & uploaden naar m'n laptop is daarom niet practisch. Server-server-communicatie gaat een stuk sneller.

Instantiatie

Dus de site klonen en aan de praat krijgen - Het vertaalwerk volgt later.

Hosting-account aanpassen (0,25h)

  • DNS-entries verwezen al naar het Cloudways-account. Die zijn teruggezet naar de ontwikkelserver (TransIP)
  • Email aanmaken: De ervaring leert, dat je vermoedelijk wel webwinkels kunt runnen zonder eigen emailadres, maar dat dit al snel te ingewikkeld is. Daarom:
    • Binnen het TransIP-account email-service afgenomen (DNS & email gaan altijd via TransIP en nooit via CloudWays)
    • DNS-entries aangepast
    • Emailaccount info@ aangemaakt
    • Email getest.

Bestanden kopiëren

  • Maak op de doellocatie een virtueel hostaccount aan, inclusief database (5min)
  • Maak op bronlocatie een gecomprimeerde (archiefbestand) backup van de database (5min)
  • Kopiëer de site. Zoiets als rsync -hrz master_of_disaster@123.456.789.012:applications/example_com/public_html/* . --info=progress2. Zie m'n CloudWays-commando-document voor details. Dit kostte op 22 maart 2021, precies 15 minuten. Als ik dit via m'n laptop had gedaan, had dat richting een halve dag geduurd. Kopiëren geeft wat foutmeldingen, maar die zijn niet ernstig: Sommige WAF-bestanden (WordFence Firewall) kunnen niet gekopiëerd worden, en er is de onschuldige waarschuwing skipping non-regular file "wp-content/db.php".

Site doellocatie aan de praat krijgen

  • wp-config.php aanpassen
  • Database uitpakken & importeren
  • Certbot toepassen om een SSL-certificaat te verkrijgen en aanpassen virtuele host-definities: Zelfs als het domein maar nét is aangemaakt, werkt Certbot al. Da's erg handig. Ik hoef dus alleen te werken met een domein met https
  • wp search-replace - Alleen met https. Vergde trouwens bijna twee minuten executietijd.

Nu staat er een werkende webwinkel.

wp search-replace duurde bijna twee minuten. Maar daar krijg je wel 93.954 vervangingen voor terug!

Plugins uitschakelen

Sommige dingen zijn binnen de huidige omgeving niet handig. Daarom:

wp plugin deactivate wp-rocket redis-cache wp-dbmanager iwp-client
  • Je kunt in één wp plugin deactivate-commando meerdere plugins uitschakelen. Je moet ze scheiden met spaties, niet met komma's
  • iwp-client is een plugin om update-meldingen te onderdrukken. Die plugin wordt gebruikt door het hostingbedrijf dat de originele webwinkel host. Om precieser te zijn: iwp-client is de originele naam. In WordPress verschijnt dit onder een rebranded naam.

Bestandskenmerken bijwerken

Een versgeïnstalleerde kloon geeft verbazend veel waarschuwingen, bij inloggen in de backend. De meeste hiervan hebben betrekking op bestands- en maprechten.

Foutmeldingen bij een versgeïnstalleerde kloon. Bij nader inzien gaat het maar om drie plugins: WooCommerce PDF Invoices & Packing Slips, WP Rocket en iets rondom backups

Bijwerken gaat via een eigen script:

wp_sr /var/www/example.ch open

Remove existing orders

Code werkt perfect doch traag, met ca. 5 orders/seconde. Met 4.588 orders duurt dat ca. een kwartier.

wp post delete $(wp post list --field=ID --post_type="shop_order") --force

Remove existing users

Werkt perfect:

wp user delete $(wp user list --role="customer" --field=ID) --yes
  • Leuke extra: Dit commando gaf ik in additionele terminal, terwijl het commando om orders te verwijderen, in een andere terminal draaide. Dat kan dus probleemloos naast elkaar
  • Dit commando lijkt niet goed te werken, als wp_sr nog niet is uitgevoerd.

Site-taal aanpassen (5min)

  • Dat gaat niet via de interface, maar wel via de CLI
  • ch_FR lijkt niet te bestaan. Daarom fr_FR gebruikt
  • Zie WordPress & Taal voor details:
wp language core install fr_FR
wp language core activate fr_FR
wp language core update

Niet-vertaalde teksten verwijderen (15min)

  • Er waren een handjevol SEO-pagina's waarvoor er geen vertaling is → Deze pagina's handmatig verwijderd
  • Er stonden SEO-teksten op diverse categorie-pagina's en ik geloof op nog meer pagina's - Ook verwijderen.

Maak backup (0,25h)

Vertalen heeft nog enigszins een experimenteel karakter en daarom is dit een goed moment voor een backup van zowel database als bestanden: De bestanden veranderen namelijk ook: Afbeeldingen krijgen andere namen en er worden mogelijk vertaalbestanden gedownload. Backups zijn ondergebracht onder ~/backup. Backup maken:

  • Maak een db-backup op de gebruikelijke manier
  • Ga naar ~/backup en maak een nieuwe map aan. Bv.: example.ch-2021.03.22-12.03
  • Maak van die map de CWD
  • Kopiëer alles met zoiets als rsync -va /var/www/example.ch/* .. De switch -a is belangrijk, omdat ik anders incomplete backups krijg. Het backup-proces duurt ongeveer 6 minuten. Het grootste deel van de tijd gaat op aan het kopiëren van de ca. 250.000 afbeeldingen.

Restore backup

Ik wil (eenmalig) zeker weten dat de backup functioneert. Dus heb ik de brondata verwijdert en de backup teruggezet - Er is geen andere eerlijke manier om dit te doen. Terugzetten van de backup ging ongeveer zo:

cd /var/www/example.ch
rsync -va ~/backup/ch-20210330-1403/ .
wp_sr /var/www/example.ch open
  • Ik heb opnieuw de </code>-a</code>-switch gebruikt, om bestandskenmerken zo veel mogelijk te behouden
  • wp_sr is een eigen routine om rechten van WordPress-sites in te richten. Anders werkt het niet.

Vertalen

Het eigenlijke vertaalwerk. Dit is overwegend on-site, dus dingen die op de site gebeuren.

Vertaling afbeelding-bestandsnamen (0,25h)

  • Vertaling middels een mmv-script
  • Werkte prima, met één uitzondering: Oorspronkelijk was de bedoeling om te beginnen met een .fr-site ipv. een .ch-site. Die wijziging was echter nog niet doorgevoerd in dit script. De schade was gelukkig beperkt en te fixen middels zoiets als mmv "*example.fr*" "#1example.ch#2"

Vertaalscripts (1h)

Op dit moment zijn er zo'n 15 vertaalscripts. Duurt ca. een uur bij elkaar om ze kort te inspecteren, uit te voeren, en af en toe te checken of ik resultaten zie. Van veel scripts weet ik niet meer goed wat ze doen. Dat is latere zorg.

Maak backup (2)

Goed moment voor een tweede backup. Zie eerdere backup voor details.

Regenerate thumbnails

De preciese plek in de procedure weet ik nog niet, maar er is beslist een moment voor het CLI-commando

wp media regenerate

Valuta & BTW aanpassen (5min)

  • Hoe heb ik dit bijna kunnen vergeten? Zwitserland heeft z'n eigen valuata ipv. euro
  • BTW-instellingen hoefden niet aangepast te worden.

Zie WooCommerce & BTW & Webwinkels & BTW voor details.

Off-site

Conversion Tracking & gAna

Conversion Tracking en inrichting Google Analytics worden verzorgd door een externe partij - Godzijdank.

Mollie-account uitbreiden

  • Log in in het bestaande Mollie-account
  • Websiteprofielen » Maak een nieuw websiteprofiel aan
  • Etc.

gMC uitbreiden

Bestaande Google Merchant Center-account uitbreiden. Zie Google Shopping voor details.

gSC inrichten

Google Search Console- (voormalige Webmaster Tools)-account inrichten: 5 Minuten werk.

Submit Site map

Is de site helemaal klaar voor actie? Dien dan de sitemap in via gSC.

Overig

Robots.txt

Er wordt een robots.txt-file gebruikt ivm. overlast door vele crawler-bezoek. Daarin stond de URL van de sitemap. Die moest aangepast worden.

Evaluatie

Volgende keer

  • Doe het project in één keer: Dit project was halverwege een paar weken blijven liggen. Toen ik het weer oppakte, had ik geen goed overzicht over de vertaalscripts. Dat heeft me lang gehinderd.

Keep it simple:

  • In de orginele sites: Heb ik écht voor alle producten aparte afbeeldingen nodig? Zonder al te veel moeite kan ik dat reduceren van ca. 250.000 naar ca. 4.000 afbeeldingen. Dat zou flink schelen
  • Namen van apparaten verwijderen in bestandsnamen e.d.: Deze namen zijn nogal arbitrair en dat maakt het lastige materie
  • Gebruik PHP-API ipv. dingen op db-niveau te doen: Da's echt veiliger en soms gemakkelijker
  • Werk per functionaliteit, niet per entiteit: Niet op db-niveau in één keer alles met de term raam vervangen door fenêtre vervangen, maar per functionaliteit te werk gaan: Anders heb ik geen overzicht
  • In de bron-site overbodige zaken verwijderen
  • In de bron-site inconsistenties in de structuur verhelpen. Bv. catalog-tags die buiden de hiërarchie vallen.

Zie ook