In dit artikel kijk ik samen met jou naar één van de belangrijkste gereedschappen in de gereedschapskist van de WordPress professional. Het verbaast mij eigenlijk, dat er nog steeds zoveel mensen zijn die dit Zwiterse Zakmes voor de WP Professional niet gebruiken.
WP-CLI, wat is dat eigenlijk?
Wanneer je WordPress beheert dan denk je mogelijk in de eerste plaats aan het inloggen op het WordPress dashboard en vandaar uit de nodige aanpassingen doen.
Voor het beheren van één site is dit allemaal nog goed te doen, maar wanneer je meerdere sites moet beheren, dan kan dit toch een behoorlijke uitdaging zijn. Om de beheerder van meerdere WordPress websites hierbij te helpen is er al jaren terug een heel handig tooltje ontwikkelt, een ‘Command Line Interface’ (CLI) voor WP. En heel origineel hebben ze deze tool ‘WP-CLI’ genoemd.
Met deze tool kan je op afstand WordPress websites beheren. Nou ja, op de voorwaarde dan, dat WP-CLI ook geïnstalleerd is op de machine waarop de website staat waar je ‘iets’ mee wilt doen.
WP-CLI installeren op Linux
WP-CLI installeren is eigenlijk heel eenvoudig. Als eerste moet je WP-CLI downloaden. Dat doe je niet vanaf een website, maar hiervoor moet je toegang hebben tot een SSH verbinding met een Linux machine.
Op die machine geef je het onderstaande commando in.
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
Vervolgens zal je moeten checken of het werkt. Zit je op Windows of MacOS betekent dat, dat je ook PHP zal moeten downloaden en installeren. Werk je op een Linux machine die al ingericht is als een webserver zal het geen probleem zijn. Dit controleren doe je door het volgende in te tikken:
php wp-cli.phar --info
Vervolgens zal er een halve pagina met informatie komen over de versie van WP-CLI. Het belangrijkste is dat die informatie er staat, niet dat je het ook begrijpt.
Nu zal je iedere keer dat je gebruik wilt maken van een commando dat hele lange stuk ‘php wp-cli.phar’ in moeten tikken. Dat wil je niet. En daarom kan je het -het mooie van Linux- het bestand een executable maken. En om het gelijk goed bereikbaar te laten zijn, verplaatsen en hernoemen we het bestand.
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
In de eerste regel zeg je eigenlijk dat je van dat bestand met die onmogelijke naam een executable bestand wilt maken, zodat je niet iedere keer ‘php’ ervoor hoeft te tikken.
In de tweede regel zeg je ‘verplaats dat bestand met die moelijke naam naar /usr/local/bin/ en geef het gelijk de naam ‘wp’ in plaats van die moeilijke naam’.
Let op dat je geen slash aan het einde van die regel tikt.
Nu kan je het bestand benaderen als een commando met de naam ‘wp’.
Tik je nu dus in
wp --info
krijg je hetzelfde resultaat! Met als groot verschil, dat je nu minder hoeft te tikken.
Gefeliciteerd, je hebt nu WP-CLI geïnstalleerd.
Zullen we eens kijken, wat we nu met WP-CLI kunnen doen?
Installeren op de Mac
De bovenstaande methode kan je heel goed gebruiken om het ook op de Mac te installeren, maar wanneer je ‘Homebrew’ installeert, kan het -na Homebrew te hebben geïnstalleerd- ook een stuk eenvoudiger.
brew install wp-cli
Installeren op Windows
Onder Windows zijn er twee manieren om wp-cli te installeren. De eerste manier is een ‘Linux subsysteem’ als WSL2 of Cygwin te installeren op je computer. Dit valt buiten het bestek van dit artikel, maar als je WSL2 of Cygwin hebt draaien, dan kan je gewoon de instructies met betrekking tot de Linux installatie volgen.
Wil je het gewoon onder Windows installeren zonder al dat ‘gedoe’ met Linux subsystemen, dan kan dat ook. Je moet er dan echter wel rekening mee houden dat jouw installatie een aantal functionaliteiten zal missen.
In alle gevallen zal je PHP moeten installeren. Wil je geen locale webserver op je PC hebben, dan kan je PHP downloaden van de officiële PHP website. Volg de installatiestappen zoals daar beschreven.
De vervolgstappen zijn eenvoudig.
Maak een folder aan om wp-cli.phar op te slaan. Dit doe je door op de Windows knop op je toetsenbord te klikken en het commando cmd in het zoekveld in te toetsen, gevolgd door de ‘enter’ toetst. Je krijgt nu een command window.
Nu tik je in
c:
mkdir \wp-cli
cd \wp-cli
Met bovenstaande commando’s heb je een map met de naam ‘wp-cli’ aangemaakt.
Download wp-cli.phar hier. Dit bestand sla je op in de wp folder die je zojuist hebt aangemaakt.
Open nu notepad (of, je favoriete editor) en tik daar het volgende in:
@ECHO OFF
php "c:/wp-cli/wp-cli.phar" %*
Dit bestandje sla je als wp.bat op in de wp-cli folder die we aan hadden gemaakt.
Wanneer je wat meer ervaring met de Windows commandline hebt, hoor ik je al denken ‘wacht eens even Wilko, die slashes staan verkeerd’. Nee, dat is niet. Het pad wordt namelijk doorgegeven aan PHP en omdat PHP oorspronkelijk voor Linux bedoeld was, ‘leest’ PHP de paden met ‘forward slashes’. Je had het ook met backslashes mogen doen, maar dan zou je daar iedere keer een dubbele slash neer moeten zetten, omdat voor PHP een ‘backslash’ een aparte betekenis heeft.
En als laatste stap moeten we ervoor zorgen, dat Windows weet waar te kijken wanneer we het ‘wp’ commando ingeven.
setx path "%path%;c:\wp-cli"
En nu… WordPress installeren
De belangrijkste reden, dat we al deze dingen hebben gedaan was natuurlijk om WordPress te installeren en beheren.
En om te zien hoe dat gaat, laat ik je dat graag zien aan de hand van een eenvoudig voorbeeld.
Nu zal je in eerste instantie misschien denken ‘maar Wilko, dat zijn toch wel heel veel commando’s die ik in moet geven’, maar bedenk je, dat je die commando’s in een script voor jouw specifiek besturingssysteem kan zetten, waardoor je zo’n script wel heel eenvoudig aan kan roepen.
Uitgangspunt van de onderstaande voorbeelden is dat je staat in de directory waar je WordPress wilt installeren. In veel Linux installaties zou dat typisch /var/www/ zijn.
WordPress Downloaden
wp core download --path=mijnsite.dev --version=latest
Dit commando download de meest recente WordPress versie en zal dit bestand uitpakken in de directory /var/www/mijnsite.dev.
WordPress configuratiebestand aanmaken
De volgende stap is het aanmaken van de configuratiefile. Hieronder laat ik je een eenvoudig voorbeeld zien.
wp config create --dbname=mijndatabase --dbuser=wpuser --dbpass=securepassword --dbprefix=r36y_ --dbhost=localhost
Wanneer ik dit commando uitvoer, zal er een wp-config.php bestand gemaakt worden met bovenstaande gegevens ingevuld op de juiste plaatsen.
Wanneer ik dit config bestand heb, kan ik doorgaan naar de volgende stap, de database installeren.
De database installeren
Om de database te kunnen installeren, moet je deze eerst wel een gebruiker aangemaakt hebben hebben binnen MySQL of MariaDB die de rechten heeft nieuwe databases aan te maken.
Het commando is kinderlijk eenvoudig
wp db create
En de laatste stap, het daadwerkelijke installeren.
wp core install --url=mijnsite.dev --title="Mijn Demo Site met WP CLI" --admin_user=G38ru!k3r5N4Am --admin_password=verysecurepassword --admin_email=info@mijnsite.dev
En dat was het.
Je ziet het al, er is maar een beperkt aantal parameter wat iedere keer verschillend zal zijn, dus wanneer je regelmatig WordPress websites moet installeren, misschien wel tientallen op een dag, dan loont het de moeite om een script met parameters te maken. De enige parameters die je dan variabel dient te maken zijn
- Pad (en domeinnaam) van de installatie
- Database inloggegevens, database naam en locatie van de database host
- Gebruikersnaam, wachtwoord en email adres van de admin gebruiker
- Titel voor de website.
Zo simpel is het.
Nu zijn er letterlijk honderden dingen die je met wp-cli kan doen. De ‘standaard commando set’ is meer dan 100 commando’s op dit moment, en er zijn diverse plugins die de commando set van wp-cli uitbreiden. Zo bieden diverse backup plugins voor WordPress ondersteuning voor het maken van backups via de commandline.
Laten we nog eens een aantal andere mogelijkheden bekijken
Updaten van plugins
Het updaten van plugins gaat wel super eenvoudig:
wp plugin update --all
Ik denk dat je zelf kan raden wat dit commando doet. Let er overigens wel even op, dat het commando wp plugin is en niet wp plugins. Hoewel de meeste acties betrekking zullen hebben op meerdere plugins, schrijf je het commando in enkelvoud.
Wil ik een specifieke plugin updaten, dan geef ik dit als volgt aan
wp plugin update akismet
Wil ik er twee updaten, dan doe ik dit als volgt:
wp plugin update akismet complianz-gdpr
Wil ik alle plugins minus één (of meer) updaten, kan dat ook
wp plugin update --exclude akismet,complianz-gdpr
Er zijn nog veel meer mogelijkheden, maar dit geeft je in ieder geval al enigszins de indruk van de veelheid aan opties.
Installeren van plugins
Het zal je weinig verbazen, dat je met wp-cli ook plugins kan installeren.
Stel je voor, ik wil WooCommerce installeren en activeren op een WordPress site. Het enige wat ik daarvoor hoef te doen is het onderstaande commando in te tikken…
wp plugin install woocommerce --activate
Naar aanleiding van die opdracht zal wp-cli de plugin woocommerce installeren vanuit de repository en na een succesvolle installatie activeren.
Maar stel nu dat ik een andere plugin wil installeren. Ik heb in de directory /var/wp/plugins/ een aantal veelgebruikte plugins opgeslagen als zip bestand. Laten we zeggen wp-courseware.zip. Met onderstaand commando kan ik ook dit direct installeren.
wp plugin install /var/wp/plugins/wp-courseware.zip --activate
En nog een leuk voorbeeld, stel nu, dat ik websites bouw (daar heb je niet veel verbeeldingskracht voor nodig, dat doe ik namelijk). Voor iedere website waar ik mee begin wil ik in principe een aantal plugins geïnstalleerd hebben. Laten we die voor het gemak plugin01, plugin02, plugin03, plugin04 en plugin05 noemen.
Die kan ik in één handeling installeren en activeren.
wp plugin install /var/wp/plugins/plugin01 /var/wp/plugins/plugin02 /var/wp/plugins/plugin03 /var/wp/plugins/plugin04 /var/wp/plugins/plugin05 --activate
En nog één voorbeeld om het niet te verleren. Stel je voor, dat ik het vermoeden heb dat er ‘iets mis is gegaan’ met WordPress en alle plugins vervangen wil hebben door de laatste nieuwe versie. Dus niet alleen de plugins waar updates voor zijn, maar letterlijk alle plugins. Dan is ook dat geen grote uitdaging.
wp plugin install $(wp plugin list --field=name) --force
Ok, deze laatste heeft wellicht wat uitleg nodig. Hier wordt namelijk een commando ‘genest’. Als eerste moet je kijken naar het commando tussen het dollarteken en de haakjes. dus
wp plugin list --field=name
Dit commando zal een lijst geven van de geïnstalleerde plugins, maar -belangrijk om te weten- alleen de velden die bij –field zijn opgegeven, dus alleen de namen.
Deze lijst zal als resultaat ingevoegd worden op de plaats waar het dollarteken staat, en als we plugin01, plugin02 en plugin03 de plugins zouden zijn die we hebben geïnstalleerd krijgen we dus
wp plugin install plugin01 plugin02 plugin03 --force
Door middel van de ‘flag’ –force geven we aan , dat de plugin altijd geïnstalleerd moet worden, ook als hij al geïnstalleerd is. Dit commando zal overigens niet werken voor Windows, omdat de hier gebruikte mogelijkheden Linus specifiek zijn.
Natuurlijk is al het bovenstaande nog steeds behoorlijk wat tikwerk, maar als je dit regelmatig moet doen, dan is, dan breng je natuurlijk al deze commando’s onder in één script, zodat je met één enkele aanroep alle acties uit kan voeren.
Testen of je plugins nog wel veilig zijn
Wil je -met betrekking tot de plugins die deel uitmaken van de WordPress repository- weten of deze niet voorzien zijn van malware? Dan kan je dat ook heel makkelijk testen.
wp plugin verify-checksums --all
Hiermee controleer je dus de checksum -een berekening over de bestandsinhouden- van je plugins tegen die van de WordPress repository.
Er zijn nog talloze andere commando’s die van toepassing zijn op de plugins, maar laten we eens naar wat andere functies kijken.
Het instellen van je plugins
Ok, hier begint het een beetje ingewikkeld te worden, maar stel nu, jij bent een WordPress professional en iedere week moet je toch wel een nieuwe website klaarzetten voor een klant. Dat is allemaal natuurlijk prachtig (dat wil zeggen, dat je een lopende business hebt), maar zelfs wanneer je WordPress en de plugins allemaal netjes via één commando kan installeren, heb je nog steeds behoorlijk wat werk te doen, om al die plugins juist in te stellen.
Maar is dat wel zo? Dat hoeft namelijk helemaal niet. Je kan wp-cli namelijk ook gebruiken om opties van plugins in te stellen.
De WordPress opties worden normaliter opgeslagen in de wp_options tabel. Nu hoeft de prefix niet altijd wp_ te zijn, eigenlijk zelfs beter wanneer dat niet het geval is, het kan dus ook w8_ of rftgov098_ als prefix zijn.
Maar na de prefix kom in ieder geval het woord ‘options’.
Je zal daarvoor echter wel wat meer voorwerk moeten doen, dus wanneer je één of twee websites te installeren hebt, is het zeker de moeite niet waard.
Welke opties hebben we?
Om te weten wat je met de opties kan doen, is het altijd goed om te weten welke opties we hebben.
wp option list
Na één keer dit commando geprobeerd te hebben, weet je dat dit geen goed idee is. Je krijgt een enorme lijst te zien waar je eigenlijk weinig mee kunt. We moeten dit dus anders doen.
Stel je voor, dat je alle options voor WooCommerce zou willen bekijken. En je weet toevallig, dat deze opties met wc_ beginnen.
Je kan dan al heel makkelijk een duidelijker beeld hebben door gebruik te maken van de –search en –exclude flags, zoals bijvoorbeeld:
wp option list --search="wc_*" --exclude="*_product_*"
Hier krijg je alle opties te zien die met ‘wc_’ beginnen en niet het patroon ‘_product_’ in de naam hebben.
De opties aanpassen
De belangrijkste reden dat we echter willen weten welke opties we hebben, is om een plugin makkelijk te kunnen configureren.
En daar gebruiken we een aantal commando’s voor. Maar laat me je eerst iets meer uitleggen over de opties in WordPress.
‘Serialized’ informatie
Informatie kan in allerlei formaten worden opgeslagen. Een voor de hand liggende manier is natuurlijk informatie op te slaan in naam/waarde paren. Dus iets als
Naam | Waarde |
---|---|
myplugin_background_color | #123456 |
myplugin_font_color | #654321 |
myplugin_border | true |
myplugin_box_shadow | true |
yourplugin_font_color | #ABCDEF |
yourplugin_background_color | #FEDCBA |
yourplugin_border | true |
Wat hier sowieso al netjes gedaan is, is dat iedere plugin zijn eigen ‘prefix’ voor de opties heeft. En het voorbeeld maakt al duidelijk waarom dat een goed idee is. Als beide plugins geen prefix zouden hebben gehad, zouden de opties van de éne plugin die van de andere overschrijven.
Sommige plugins hebben pagina’s vol met instellingen. Dus het gaat hier niet om een paar opties, maar soms enige honderden tot duizenden per plugin. Je zal begrijpen, dat dit een database wel heel erg vol maakt. En ook, wanneer deze waarden opgevraagd moeten worden, dit heel wat zoekopdrachten zal kosten.
Dat is verre van ideaal, dus hebben de makers van PHP bedacht dat het goed zou zijn om informatie op een soort gecomprimeerde manier op te kunnen slaan.
En WordPress heeft dat idee overgenomen in onder meer de opties tabel.
De informatie wordt ‘geserialiseerd’. Dat wil zeggen, dat we meerdere naam / waarde paren in een bepaalde structuur zetten. Hieronder zie je de instellingen van ‘yourplugin’ geserialiseerd. Omdat we nu geen onderscheid hoeven te maken tussen de ‘myplugin’ en ‘yourplugin’ waarden, kunnen we bovendien de naamvelden korter maken.
a:3:{s:10:"font_color";s:7:"#ABCDEF";s:16:"background_color";s:7:"#FEDCBA";s:6:"border";b:1;}
In een tabel zou het er als volgt uit komen te zien
Naam | Waarde |
---|---|
yourplugin | a:3:{s:10:”font_color”;s:7:”#ABCDEF”;s:16:”background_color”;s:7:”#FEDCBA”;s:6:”border”;b:1;} |
We krijgen dus nogal eens te maken met complete informatie om te verwerken. Gelukkig zijn daar ook voorzieningen voor bedacht.
Een waarde opvragen
Wat we dus willen is de waarden opvragen van bepaalde instellingen voor bepaalde plugins.
Bij het installeren van een plugin zal een groot aantal opties standaardinstellingen krijgen en dat is mooi. Daar hoeven we ons geen zorgen over te maken.
Maar bij de eerste keer dat we een plugin configureren, moeten we er altijd voor zorgen dat we goed opschrijven welke instellingen we aanpassen.
Met het list commando kunnen we zoeken om welke velden het zoals kan gaan. Heb je de resultaten gevonden, dan is het tijd voor de volgende stap, de inhoud van de velden ‘op te slaan’.
Dat doen we met het onderstaande commando
wp option get home
Met deze opdracht krijg je de waarde van de optie ‘home’ te zien. ‘home’ is de standaard url van je homepage en een standaard optie van WordPress
wp option get some_serialized_option --format=json
Dit commando geeft je de waarde van de -denkbeeldige- ‘some_serialized_option’ terug in het JSON formaat. Het JSON is een ander -wat jonger- geserialiseerd formaat, wat makkelijker leesbaar is dan het PHP geserialiseerde formaat.
Nu weten we hoe we waarden op kunnen halen, maar hoe passen we waarden aan? Dat kan op verschillende manieren.
De waarde aanpassen
De eenvoudigste manier om een optie aan te passen is dit door middel van een naam / waardepaar te doen
wp option update home "https://mijnnieuwewebsite.dev"
Maar wanneer je te maken krijgt met een geserialiseerde waarde, dan wordt het al iets complexer. We hebben in een vorig commando al gezien, dat we geserialiseerde informatie ook op andere manieren uit kunnen voeren, en daar gaan we gebruik van maken.
Wanneer de JSON output relatief klein is, is het makkelijk. We kopieren en plakken gewoon. Denk eraan, dat we dit soort aanpassingen normaal gesproken alleen via een script doen, dus dat is geen enkel probleem. Is het een grotere input, dan doen we het iets anders. Anders wordt ons script wel heel onoverzichtelijk.
We herschrijven de code om de waarde op te vragen een beetje
wp option get some_serialized_option -- format=json>/var/wp/options/some_serialized_option.json
Door dit commando wordt de uitvoer van dit commando naar een bestandje met de naam ‘some_serialized_option.json’ in de folder /var/wp/options/ gestuurd,
Dit kunnen we vervolgens naar een andere site updaten met het commando
wp option update some_serialized_option </var/wp/options/some_serialized_option.json --format=json
Wanneer we te maken hebben met een geserialiseerd veld met waarden paren, zoals in ons voorbeeld in de tabel hierboven met ‘yourplugin’, dan kunnen we de waarden ook op een andere manier bijwerken.
Stel nu dat ik de achtergrond bij zou willen werken naar ‘zwart’. Dan kan ik dat ook doen door middel van het patch commando
wp option patch update yourplugin background_color "#000000"
Andere mogelijkheden
We hebben nu uitgebreid gekeken naar de mogelijkheden om via wp-cli een complete installatie van WordPress te doen… we configureren en installeren WordPress, we installeren de plugins en configureren die. En dat alles door het starten van één enkel script (je schript wat je naar aanleiding van bovenstaande commando’s kan schrijven).
Zelf ben ik al snel een half uur tot een uur bezig met het opbouwen van een nieuwe WordPress website… het installeren van WordPress, de noodzakelijke plugins en meer. Het maken van een goed script kan je dus een uur per project schelen. Dat is toch mooi meegenomen.
Maar je kan nog veel meer met wp-cli, zullen we naar nog enkele mogelijkheden kijken?
Code genereren met wp-cli
Wanneer je als WordPress developer begint, ontdek je al snel, dat WordPress een aantal wel heel saaie, routinematige handelingen kent. Met een aantal wp-cli commando’s kan je je leven toch een stuk plezieriger maken.
Code voor een child theme genereren
Je kan in één eenvoudig -maar wel lang- statement de code voor een child theme genereren
wp scaffold child-theme my-child-theme --parent_theme=twentytwenty --theme_name="My Child Theme" --author="Wilko van der Ploeg" --author_uri="https://wordxpression.nl/" theme_uri="https://wordxpression.nl/" --activate
Met dit commando zorg ik ervoor, dat op basis van het thema Twenty Twenty een nieuw child theme wordt gemaakt, met mijn informatie alvast in de header geschreven.
O ja, het thema wordt ook direct geactiveerd.
Basiscode voor een plugin genereren
Laten we er nog eens één proberen. Want wanneer je code voor een child theme kan genereren, dan kan je waarschijnlijk ook wel de basiscode voor een plugin genereren… toch? Of niet!
Ja dus. En het leuke is, dat dit niet alleen de plugin basiscode genereert, maar ook een groot aantal bestanden die nodig zijn voor verschillende test- en packaging tools. Heb je geen idee waar ik het over heb, is dat geen probleem, maar gaat je hart hier sneller van kloppen, dan ben jij waarschijnlijk straks ook één van die wp-cli enthousiastelingen.
wp scaffold plugin my-plugin --plugin_name="My Plugin" --plugin_description="My supercalifragilisticexpialidocious WP Plugin" --plugin_author="Wilko van der Ploeg" --plugin_author_uri="https://wordxpression.nl/" --plugin_uri="https://wordxpression.nl/"
Er zijn nog veel meer ‘code genereer mogelijkheden’ met wp-cli, maar laten we eens verder gaan naar wat andere opties.
Nog enkele handige commando’s om te kennen
Database exporteren
Wil je op een eenvoudige manier je WordPress database direct exporteren? Dat kan met één simpel commando:
wp db export ~/wpdump.sql
Let op: Dit commando werkt niet onder Windows. De tilde (~) is een Linux/Unix specifiek teken, wat verwijst naar je home directory. De export komt dus in je ’thuis’ directory buiten de webomgeving te staan.
Wil je een complete backup maken? Dat doen we dan niet met wp-cli (die gebruiken we alleen voor de database), maar met een ander commando, wat standaard onderdeel van Linux is. Zorg dat je in de web rootdirectory van je site staat (meestal public_html) wanneer je dit commando uitvoert.
tar -vczf ~/mywordpressbackupfile.gz .
Vervolgens kan je dit downloaden naar een veilige plaats en van de server verwijderen.
Zoek en vervang
Een ander handig commando is het zoeken en vervangen van tekst. Stel je bijvoorbeeld voor, dat je een site hebt met een groot aantal affiliate links. En ineens krijg je te horen, dat jouw affiliate partner nieuwe links gaat gebruiken. Dan kan je die links heel eenvoudig vervangen door heel je WordPress installatie
wp search-replace 'https://old-affiliate-link.com/12345/' 'https://new-affiliate-link.com/12345/'
Gebruikers toevoegen
Gebruikers toevoegen van de commandline is ook geen enkel probleem
wp user create joep joep@somemail.com --first_name="Joep" --last_name="Meloen" --send-email
Er wordt een gebruiker aangemaakt met de default rol (Subscriber / Abonnee meestal) met bovenstaande gegevens en de gebruiker krijgt een email met het wachtwoord.
wp user generate --count=10
Bovenstaand commando is handig voor een test situatie. Er worden 10 gebruikers aangemaakt met dummy data.
Wat vertraagt mijn WordPress site?
Voor een gedetailleerde analyse is dit commando niet geschikt, maar om een eerste indruk te krijgen van wat jouw WordPress website nu eigenlijk vertraagt, is het volgende commando heel handig
wp profile stage --all --spotlight --url="https://website.dev/zomaar-een-pagina/"
Met dit commando laat wp-cli de verschillende stadia van het laden zien bij het laden van de in –url genoemde pagina. De ‘spotlight’ flag zorgt ervoor, dat stadia met een laadtijd van bijna nul uitgefilterd worden.
Verbinden op afstand
Aan het begin van dit artikel, beloofde ik je, dat je ook kan verbinden met websites op afstand. Want dat maakt het natuurlijk pas leuk. Daar moet je echter wel enkele dingen voor regelen.
Allereerst moet op die remote website ook wp-cli geïnstalleerd staan, en jij moet de rechten hebben om via SSH in te logen op die site.
Als extra vereiste, je moet in kunnen loggen met een zogenaamde SSH public key. Dit maakt het mogelijk om zonder wachtwoord in te loggen. Aan jouw kant van de communicatie hebt jij jouw ‘private key’ en deze gebruik je om in te loggen op een machine waar je jouw ‘public key’ hebt opgegeven. Meer informatie over hoe je zo’n key kan genereren vind je hier.
In principe kan je ieder commando in dit artikel besproken ook ‘remote’ uitvoeren (tenzij je via Windows werkt)
Wil je een server op afstand benaderen, dan kan je bij vrijwel ieder commando als extra parameter meegeven
--ssh=[schema][<user>@]<host>[:<port>][<path>]
Prima, zal je zeggen, maar hoe moet ik dit in vredesnaam lezen?
Stel je voor, je moet op die specifieke machine via SSH inloggen met de gebruikersnaam wilko en je wilt werken in de directory /var/www/mijngeweldigewebsite.dev, dan ziet een commando er ongeveer als volgt uit
wp plugin update --all --ssh=wilko@hostwaarmijnwebsitesstaan.nl/var/www/mijngeweldigewebsite.dev
Dat is wel een hoop tikwerk. Ik kan gelukkig -in Linux- een alias bestand definieren.
In de mijn home folder moet ik een folder aanmaken met de naam .wp-cli en in die folder moet ik een bestandje met de naam config.yml aanmaken.
Dit is een zogenaamd YAML bestand.
Hier is een voorbeeld van wat er in zo’n bestand zou kunnen staan
@me:
ssh: wilko@hostwaarmijnwebsitesstaan.nl/var/www/mijngeweldigewebsite.dev
@someoneelse:
ssh: someoneelse@otherhost.dev~/var/www/website
Nu kan ik mijn commando herschrijven als
wp @me plugin update --all
Behalve een hoop tikwerk heeft het werken met aliassen een aantal andere voordelen, waar ik in dit artikel verder niet op in wil gaan (het is al lang genoeg).
Tenslotte
WP-CLI is een tool die eigenlijk in geen enkele gereedschapskist van een WordPress professional mag ontbreken. Al was het alleen al vanwege de enorme tijdswinst.
Gelukkig bieden ook steeds meer hosting providers van shared hosting pakketten SSH en WP-CLI toegang tot hun servers aan, waardoor het steeds eenvoudiger wordt voor een WordPress professional een WordPress website van een klant te onderhouden, zonder iedere keer in te hoeven loggen.
Dit bespaart toch al snel enkele uren per jaar.
Tijdens de cursus WordPress Developer wordt ook ruim de aandacht geboden aan het werken met WP-CLI omdat dit toch op vele manieren de WordPress professional op een goede manier ondersteunt.
Ben jij een WordPress Professional en wil jij met WP CLI aan de slag, maar wil je het wel in één keer goed doen, dan kan je ook een afspraak maken voor een persoonlijke training. Na het einde van deze trainingsdag, ken jij de ins en outs van WP CLI en heb je een aantal scripts die jou in de toekomst uren werk zullen besparen.