Het grootste deel van zijn leven is WordPress gebouwd met behulp van een eenvoudige codebasis met een vleugje objectgeoriënteerde PHP wat het meest abstracte systeem is. In de afgelopen paar jaar is dit echter in positieve zin aan het veranderen. Van unit testing tot CSS preprocessing en command line tools, duiken er steeds meer ontwikkelaar vriendelijke assets op. In dit artikel kijken we naar een van mijn favorieten: WP-CLI.

WP-CLI is al meer dan een decennium lang een open-source project en wordt sinds 2003 voornamelijk onderhouden door Daniel Bachhuber. Het primaire doel van WP-CLI is om de workflows van WordPress-ontwikkelaars te versnellen.

Door de jaren heen is het project zo veel meer geworden! Het wordt nu zelfs een vereiste voor andere open source-projecten zoals Trellis en Bedrock. Vanaf januari 2017 is WP-CLI officieel verhuisd naar WordPress.org en wordt nu ook onderhouden door Alain Schlesser.

WP-CLI v2 is uitgebracht op 8 augustus 2018, dus we zullen ook enkele van de veranderingen en nieuwe functies verkennen. Als je klant bij Kinsta bent, wordt WP-CLI v2.0.1 standaard op al onze servers geïnstalleerd, SSH gewoon naar jouw server om aan de slag te gaan. SSH-toegang is inbegrepen in al onze hosting pakketten.

WP-CLI Verkrijgen

De minimale PHP-vereiste voor WP-CLI v2.0.0 is opgetrokken tot PHP 5.4. Hoewel dit een goede stap vooruit is, raden we aan dat je ten minste een ondersteunde versie van PHP gebruikt, oftewel 5.6 of hoger. PHP 7.2 is standaard op alle Kinsta-installaties, zowel om redenen als beveiliging als voor prestaties. We hebben ook PHP 7.3 beschikbaar.

Om te beginnen moet je WP-CLI installeren — een heel eenvoudig proces. De stappen voor Linux en OSX zijn als volgt, voer deze drie commando’s een voor een uit:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Als er iets misgaat of als je Windows gebruikt, raadpleeg dan de basisinstructies of de alternatieve installatie methoden.

Zodra dit is voltooid, moet je de opdracht wp --info kunnen gebruiken en een zinvol antwoord krijgen.

Het proces is hetzelfde wanneer je WP-CLI op je server wilt installeren. Vergeet niet dat voor Kinsta klanten WP-CLI al is geïnstalleerd. Weet je niet zeker welke versie je momenteel gebruikt? Je kunt altijd het wp cli version commando uitvoeren om dit uit te vinden.

De Basis van WP-CLI

Het hebben van toegang tot WordPress vanaf de command line is krachtig op zichzelf, maar het kan je nog meer controle en snelheidswinst geven door het gebruik van bash-scripts.

Met basisscripts kan je een reeks opdrachten uitvoeren met één opdracht. Je kunt bash bash install-and-setup.sh typen en het volgende resultaat krijgen:

  • WordPress downloaden
  • Aanmaken en vullen van de wp-config.php
  • De database maken
  • WordPress installeren
  • Installeren en activeren van eventuele plugins die je nodig hebt
  • Installeren en activeren van een thema
  • Downloaden en toevoegen van test content

Dit zouden de stappen zijn die ik zou nemen om een nieuwe testomgeving voor een project te creëren. Normaal zou het me minstens 5-10 minuten kosten, vooral als er een paar plugins bij betrokken zijn. Het uitvoeren van een enkele opdracht is uiteraard een stuk sneller.

Algemene WP-CLI Commands

Als je gewend bent om in de terminal te werken, is er niets speciaals aan WP-CLI voor jou. Opdrachten beginnen altijd met wp gevolgd door een opdracht en een subopdracht, gevolgd door vereiste en optionele parameters, iets als dit:

wp command subcommand requiredparam --optionalparam --optionalparam2=value

Laten we eens een thema installeren en kijken hoe dat werkt met een echt commando:

wp theme install twentyseventeen --activate

Dit zal het Twenty Seventeen thema installeren en activeren op jouw WordPress installatie

Houd er rekening mee dat WP-CLI zal werken met de WordPress-installatie waar je momenteel in de terminal bevindt. Als je van directory wisselt om naar een andere WordPress-installatie te gaan, werkt WP-CLI daarmee.

Bruikbare Voorbeelden

Dat was WP-CLI in een notendop! Hoewel er een paar geavanceerde dingen zijn die je kunt doen, die we zo meteen zullen bespreken, weet je al genoeg om te beginnen en alles te doen wat je wilt. Ik raad aan om eens naar de lijst met commands te kijken en probeer er een paar uit. We zullen hier een paar nuttige dingen bespreken, daarna gaan we verder met het gebruiken van WP-CLI via SSH en het gebruik van bash-scripts.

WordPress Installeren

Ik gebruik WP-CLI vaak om testomgevingen op te zetten, waarvan de eerste stap een vanilla-installatie is. Hier is een lijst met opdrachten die ik uitvoer:

wp core download
wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <

Hoe cool dit is! De meest recente versie van WordPress wordt gedownload met behulp van de eerste opdracht. De tweede opdracht stelt het configuratiebestand in met de database-toegang en wat extra PHP aan het einde. De extra constanten zorgen ervoor dat we onze debug opties gebruiken om te kunnen testen.

Met de derde opdracht wordt de database gemaakt (WP-CLI gebruikt de database-toegangsinformatie uit het configuratiebestand) en tot slot installeren we WordPress met behulp van een aantal parameters.

De WordPress core Herinstalleren

Je kunt de WordPress core ook herinstalleren met WP-CLI. Het volgende commando zal de core van WordPress opnieuw downloaden zonder de standaard thema’s en plugins.

wp core download --skip-content --force

WordPress URL veranderen

Er zijn veel redenen waarom je jouw WordPress-URL moet of wilt wijzigen. Misschien ben je bezig met het wijzigen van domeinen, naar een subdomein aan het verhuizen, aan het bijwerken van www naar niet-www, bestanden aan het verplaatsen of zelfs aan het migreren van HTTP naar HTTPS. Hoe het ook zij, je kunt hiervoor eenvoudig het wp option update-commando gebruiken. Hieronder staat een voorbeeld:

wp option update home 'http://example.com'
wp option update siteurl 'http://example.com'

Lijst met Details over de Huidige Plugins

Om een lijst te krijgen van de huidige plugins die op een site zijn geïnstalleerd, gebruik je gewoon de volgende opdracht. In dit voorbeeld kan je zien dat we de Schema en Yoast SEO plugin hebben geïnstalleerd. Het geeft ook de status weer (actief/gedeactiveerd), of er een update beschikbaar is en de huidige versie.

wp plugin list
WP-CLI plugin lijst

WP-CLI plugin lijst

Meerdere Plugins Installeren

Om meerdere plugins tegelijkertijd te installeren kan je gewoon parameters aan elkaar koppelen. Hieronder staat een voorbeeld hoe je 3 plugins kunt downloaden en activeren:

wp plugin install advanced-custom-fields jetpack ninja-forms --activate

Merk op dat de plugin-namen uit de repository gebruikt worden. De eenvoudigste manier om dit te achterhalen is om de pagina te bezoeken en naar de URL te kijken of om de wp plugin search searchterm te gebruiken, die je een lijst in de terminal zal geven.

WordPress plugin repository URL

WordPress plugin repository URL

Indien nodig kan je ook oudere versies van WordPress plugins installeren met het –version attribuut

wp plugin install wordpress-seo --version=4.8 --activate

Nog cooler, je kunt plugins installeren van externe bestanden, dus niet alleen de repository, wat handig is als je een plugin ontwikkelt of een premium plugin gebruikt. De volgende opdracht installeert twee plugins uit de repository en één vanaf een Amazon S3-server.

wp plugin install advanced-custom-fields jetpack https://d1qas1txbec8n.cloudfront.net/wp-content/uploads/2015/06/23073607/myplugin.zip --activate

Meerdere Plugins Deactiveren

Om een enkele plugin te deactiveren kan je het volgende commando uitvoeren:

wp plugin deactivate wordpress-seo

Om al je plugins in een keer te deactiveren voer je het volgende commando uit:

wp plugin deactivate --all
WP-CLI om alle plugins te deactiveren

WP-CLI om alle plugins te deactiveren

Deze opdracht hierboven kan handig zijn als je compatibiliteitsproblemen probeert op te lossen en je eenvoudig alle plugins in één klap moet deactiveren. Daarna kan je de plugins één voor één inschakelen, en ze testen terwijl je bezig bent.

Plugins Updaten

Je kunt ook manueel plugins updaten. Voorbeeld hieronder:

wp plugin update wordpress-seo
WP-CLI voor het handmatig updaten van een WordPress plugin

WP-CLI voor het handmatig updaten van een WordPress plugin

Database Search en Replace

Een van de belangrijkste redenen waarom het moeilijk is om een site te migreren door alleen maar een database te kopiëren en plakken, is dat de database serialized arrays bevat. Als je alle instanties van http://testsite.com moet vervangen door http://livewebsite.com, hebben de serialized arrays geen zin, omdat het aantal niet overeenkomt.

De opdracht search-replace unserialized eerst arrays, voert vervolgens de search and replace uit en re-serialiseert vervolgens de arrays. Je kan dit doen met een eenvoudige opdracht:

wp search-replace oldstring newstring

Overige parameters maken het mogelijk om veel meer te doen, inclusief het zien van een voorbeeld van wat er vervangen gaat worden. Dit middels het --dry-run commando.

Importeren en Exporteren

Er zijn twee manieren om inhoud te exporteren met WP-CLI. Je kan een XML-bestand maken, net zoals de exporttool WordPress dat doet, of je kunt de onbewerkte database exporteren / importeren. Ik vind het laatste veel nuttiger in mijn dagelijkse routine, het komt van pas bij het synchroniseren van sites.

wp db export is alles wat je hoeft te doen om een SQL-bestand te maken en wp db import file.sql is alles wat je nodig hebt om het te importeren. Werkt super goed, wees voorzichtig dat je niet alles overschrijft wat je nodig hebt, importeren zal in principe de bestaande database dumpen en in plaats daarvan het aangeleverde SQL-bestand gebruiken.

Rollen en Functies beheren

WP-CLI kan rollen vrij eenvoudig voor je beheren met behulp van de opdracht wp role. Dit is best gaaf als je wilt testen hoe je plugin werkt met aangepaste rollen, maar je maakt niet echt de rollen aan binnen je plugin.

wp role create organizer Organizer
wp cap list 'editor' | xargs wp cap add 'organizer'
wp cap add 'organizer' 'manage-events'

Het commando hierboven zal een nieuwe rol aanmaken (Organisator), alle functionaliteiten van de editor rol toevoegen en daarna een nieuwe mogelijkheid toevoegen: evenement-beheer

Testgegevens Genereren

Ik ben dol op allerlei soorten fake functies — degene die dummy inhoud toevoegen aan je site die je kunt gebruiken voor tests. WP-CLI heeft hier een aantal van ingebouwd, hieronder staan een paar functies die gebruikers, terms en berichten genereren.

wp user generate --count=5 --role=editor
wp user generate --count=10 --role=author
wp term generate --count=12
wp post generate --count=50

WP-Cron Events beheren

Je kunt WP-Cron events en/of een WordPress Cron-taak beheren met WP-CLI. Met de volgende opdracht krijg je bijvoorbeeld de huidige cron-event lijst.

wp cron event list
WP-Cron Event lijst

WP-Cron Event lijst

Transiënten Verwijderen

Je kunt zelf één of alle transiënten verwijderen met het volgende commando.

wp transient delete --all
Als je een multisite beheert, dan heb je een iets gecompliceerdere opdracht nodig. Standaard controleert opdracht alleen de tabel wp_options. Hij checkt dus niet wp_1_options, wp_2_options, etc.
wp transient delete --all --network && wp site list --field=url | xargs -n1 -I % wp --url=% transient delete --all

wp_options Tabel Opschonen

De tabel wp_options kan een algemene boosdoener zijn voor langzame zoekopdrachten op jouw site vanwege automatisch geladen gegevens die zijn achtergelaten door plugins en thema’s van derden. Bekijk dit geweldige artikel van WP Bullet over hoe je WP-CLI kunt gebruiken om jouw wp_options tabel op te ruimen.

WordPress Revisies Verwijderen

Op grote sites kan het aantal WordPress-revisies zeer op lopen tot duizenden rijen in de database die niet nodig zijn. Je kunt postrevisies verwijderen met WP-CLI. Hier is een voorbeeld van het commando:

$ wp post delete $(wp post list --post_type='revision' --format=ids)
WP-CLI WordPress Revisies Verwijderen

WP-CLI WordPress Revisies Verwijderen

Onderhoudsstand Beheren

Sinds WP-CLI v2.2.0 kan je de maintenance mode beheren op je WordPress websites. Voorbeeld:

wp maintenance-mode activate
wp maintenance-mode deactivate
wp maintenance-mode status

Gegevens Indexeren met Elasticsearch

Elasticsearch is een open-source full-text zoekmachine. Het wordt gebruikt om gegevens te indexeren en ongelofelijk snel in die gegevens te zoeken. We bieden dit aan als add-on voor Kinsta klanten. Je kan ElasticPress WP-CLI opdrachten gebruiken om indexering via SSH uit te voeren. Voorbeeld:

wp elasticpress index [--setup] [--network-wide] [--posts-per-page] [--nobulk] [--offset] [--show-bulk-errors] [--post-type]

Werken met Meertalige Websites

WP-CLI v2.0.0 bevat een nieuwe reeks opdrachten wp i18n voor degenen die met meertalige sites. werken. Zo kan je bijvoorbeeld een POT bestand maken voor een WordPress-plugin of -thema.

wp i18n make-pot  [] [--slug=] [--domain=] [--ignore-domain] [--merge[=]] [--exclude=] [--skip-js]

Bekijk de i18n-commando documentatie.

WP-CLI met WooCommerce gebruiken

Werken je met eCommerce-sites? 🛒 We raden je aan om de geweldige WP-CLI WooCommerce ontwikkeling gids van Robot Ninja te bekijken voor snelle en eenvoudige opdrachten die je kunt gebruiken. Het genereren van een lijst met klanten, bestellingen en zelfs het maken van bulkproducten zijn allemaal mogelijk met WP-CLI.

WP-CLI Op Afstand Gebruiken

Een van de beste dingen die je met WP-CLI kunt doen, is externe WordPress-installaties beheren. Dit is echt een droom van een websitebeheerder die uitkomt.

Om WP-CLI-opdrachten naadloos op een externe server via SSH uit te voeren, had je eerder de wp-cli-ssh addon nodig. Maar vanaf v0.24.0 is dit nu onderdeel van WP-CLI zelf! 👏

Belangrijk: je moet wel WP-CLI hebben geïnstalleerd, zowel op de computer waarop je de opdracht uitvoert als op je server.

Externe Servers Configureren

Je kunt jouw servers globaal of lokaal configureren. Om ze globaal te configureren, gebruik je het bestand config.yml. Je kan ook de bestanden wp-cli.yml of wp-cli.local.yml in jouw huidige directory gebruiken.

De configuratie van servers werkt ongeveer zoals dit, plak dit in een van de genoemde bestanden:

ssh:

  staging:
    cmd: ssh %pseudotty% username@server.com %cmd%
    url: http://myseite.com
    path: /www/path/to/site/root

Wanneer je dit gedaan hebt kan je het volgende commando gebruiken om WordPress op je externe site up te daten:

wp ssh core update --host=staging

Als je een groot aantal sites bezit of beheert, denk ik dat je kunt zien dat dit geweldig is! Het script zal om een wachtwoord vragen, maar als je RSA-sleutels gebruikt om in te loggen, kun je dat ook overslaan. Bekijk dit artikel om dit in te stellen op Kinsta.

Bash Scripts Gebruiken

Bash-scripts besparen je nog meer tijd door taken te automatiseren. Weet je nog hoe we veel commando’s moesten typen om WordPress te installeren? Je kan dat ook doen met een bash-script. Maak binnen een map een install.sh bestand. Plak dezelfde code die we eerder hadden en sla deze op.

wp core download
wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <

Het enige wat je nu moet te doen is bash install.sh typen en alles zal voor je worden gedaan, zonder tussenkomst van de gebruiker. Wanneer je veel sites beheert, kan je al jouw omgevingen instellen en een bash-script maken zoals deze:

wp ssh core update --host=clientA
wp ssh core update --host=clientB
wp ssh core update --host=clientC
wp ssh core update --host=clientD

Wanneer een nieuwe WordPress-versie uitkomt, kan dit je veel tijd besparen! Aangezien je alles met WP-CLI kan doen wat je maar wilt. Je kan zelfs thema’s en plugins regelmatig bijwerken op een aantal client-sites tegelijk.

Samenvatting

WP-CLI is echt de droom van de ontwikkelaar en websitebeheerder die uitkomt. Als ontwikkelaars kunnen we in een handomdraai testlocaties maken, testinhoud toevoegen en allerlei soorten gegevens magisch importeren en exporteren. Sitebeheerders kunnen site-updates en andere taken voor meerdere sites afhandelen met enkele opdrachten. Zorg ervoor dat je de release-notes van de WP-CLI v2 bekijkt!

Als je WP-CLI nog niet hebt geprobeerd, raad ik je aan het eens te proberen. Er zijn ook een aantal gemeenschap-opdrachten zoals WP-CLI-SSH die nog meer geweldige functies toevoegen! Als je problemen tegenkomt, raadpleeg dan de documentatie met algemene problemen van WP-CLI.

Vergeet niet dat de op Google Cloud gebaseerde architectuur van Kinsta WP-CLI out-of-the-box ondersteunt. Als je de meest moderne WordPress hosting architectuur wilt proberen en toegang wil hebben tot geweldige tools zoals WP-CLI, probeer dan onze managed WordPress hosting.

35
keer gedeeld