In de loop der jaren hebben vele WordPress ontwikkelaars een bijdrage geleverd in het maken en onderhouden van WP-CLI, een robuuste command-line interface die speciaal is ontworpen voor gebruik met WordPress. Als tijdbesparend hulpmiddel is WP-CLI vooral geschikt voor het beheren van WordPress Multisite netwerken, waarmee meerdere sites op één WordPress installatie kunnen draaien.
Om WP-CLI effectief te gebruiken, is het essentieel om de belangrijkste onderdelen van WordPress te begrijpen: de admin-interface, de bestandsstructuur en de database. Zonder deze basiskennis is WP-CLI mogelijk niet zo efficiënt of nuttig.
Hoewel WP-CLI standaard opdrachten en commando’s ondersteunt zoals het installeren, updaten, activeren, deactiveren en verwijderen van plugins of thema’s, reiken de mogelijkheden veel verder dan wat beschikbaar is in het WordPress Admin dashboard, waardoor het een zeer veelzijdig hulpmiddel is voor geavanceerd sitebeheer.
Dit artikel legt uit hoe je WP-CLI kunt gebruiken om WordPress Multisite netwerken efficiënt te beheren en geeft praktische voorbeelden om je op weg te helpen.
Wat is WP CLI en waarom zou je het gebruiken?
WP-CLI is een krachtig hulpmiddel voor het beheren van WordPress sites via de opdrachtregel, oftewel de command-line interface. In een Multisite omgeving kan het het beheer van een netwerk aanzienlijk vereenvoudigen, waardoor je bulkacties kunt uitvoeren en je workflow kunt stroomlijnen.
De ware kracht ligt in de flexibiliteit en uitbreidbaarheid – je kunt moeiteloos commando’s uitvoeren op het hele netwerk of op specifieke sites, terwijl je ook de functionaliteit kunt uitbreiden met een verscheidenheid aan WP-CLI pakketten die beschikbaar zijn op GitHub en andere repositories.
Ontwikkelaars maken vaak custom WP-CLI commando’s om terugkerende taken te vereenvoudigen. Je kunt WP-CLI bijvoorbeeld gebruiken om boilerplate code voor thema’s en plugins op te stellen, wat tijd en moeite bespaart tijdens de ontwikkeling.
Als je host bij Kinsta, dan is WP-CLI ingebouwd en toegankelijk via SSH, zodat je WordPress sites moeiteloos kunt beheren. Voor lokale ontwikkeling is WP-CLI beschikbaar in DevKinsta via de devkinsta_fpm
container. Eenmaal in de container kun je naar je site map navigeren en commando’s uitvoeren. Hoewel dit een beetje installatiewerk vereist, biedt het een krachtige manier om je lokale WordPress sites efficiënt te beheren voor debuggen, testen of deployments.
Voordat je begint
De commando’s in dit artikel zijn zorgvuldig gekozen omdat ze vaak gebruikt worden door WordPress Multisite ontwikkelaars en beheerders.
WP-CLI is een brede en flexibele tool, waardoor het onmogelijk is om alle beschikbare commando’s te behandelen. Om het overzichtelijk en praktisch te houden, hebben we ons gericht op eenvoudige, bruikbare voorbeelden om je op weg te helpen.
Omdat WP-CLI is gebaseerd op Unix commando’s, is het mogelijk dat je geen WP-CLI equivalent vindt voor commando’s die al bestaan in Unix.
Belangrijke opmerkingen over WP-CLI
De opdrachtstructuur van WP-CLI is flexibel, zodat je op meerdere manieren hetzelfde resultaat kunt bereiken. De volgende voorbeelden zijn bijvoorbeeld allebei geldig en valide:
wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"
Of:
wp user create johndoe --display_name="John Doe" [email protected] --nickname="Johnny"
De volgorde van vlaggen, parameters en waarden doet er niet toe als het commando en het subcommando eenmaal zijn opgegeven.
Beste practices voor het uitvoeren van WP-CLI commando’s
Volg deze best practices om mogelijke problemen te voorkomen:
- Zorg dat je altijd een actuele backup beschikbaar hebt, vooral omdat sommige van deze commando’s je site(s) permanent zullen wijzigen.
- Gebruik waar mogelijk een testsite. Als je Kinsta gebruikt, bevat elke WordPress installatie een gratis testomgeving om veilig te testen. Je kunt eenvoudig wijzigingen pushen tussen testomgevingen en live omgevingen.
- Gebruik de
--dry-run
flag om database wijzigingen te testen voordat je ze toepast.
Essentiële WP-CLI commando’s voor WordPress Multisite beheer
WP-CLI commando’s in een Multisite netwerk kunnen gericht zijn op verschillende actieniveaus:
- Netwerkbreed: Commando’s die worden toegepast op alle sites in het netwerk. Bijvoorbeeld:
wp plugin deactivate --network --all
Dit commando deactiveert alle plugins op elke site in het netwerk.
- Primaire site: Commando’s die worden toegepast op de hoofdsite die is gemaakt tijdens het instellen van de Multisite. Bijvoorbeeld:
wp plugin list
De bovenstaande opdracht geeft een lijst van alle plugins die alleen op de primaire site zijn geïnstalleerd.
- Secundaire sites: Opdrachten gericht op individuele sites binnen het netwerk, gespecificeerd door hun URL’s. Bijvoorbeeld:
wp plugin update --url=mysite.example.com akismet
Deze opdracht werkt de plugin
akismet
bij op de sitemysite.example.com
.
Om het beheren van je Multisite netwerk makkelijker te maken, hebben we de WP-CLI commando’s in deze secties gegroepeerd:
Basiscommando’s
Deze fundamentele commando’s helpen bij het oplossen van problemen en het beheren van plugins en thema’s in je netwerk.
Werken met lijsten
Met WP-CLI kun je eenvoudig lijsten opvragen van plugins en andere componenten in je Multisite omgeving.
- Een lijst opvragen van alle plugins in het netwerk:
wp plugin list --network
Uitvoer: Toont alle in het netwerk geïnstalleerde plugins met details zoals naam, status, beschikbare updates en versie.
- Plugins filteren op status (bijv. actief):
wp plugin list --network --status=active
Uitvoer: Een tabel met actieve plugins over het netwerk.
- Een lijst opvragen met plugins van de primaire site:
wp plugin list
Uitvoer: Een lijst met plugins voor de primaire site.
- Een lijst opvragen met actieve plugins voor een enkele site:
wp plugin list --url=<site-url> --status=active
Invoervoorbeeld:
wp plugin list --url=blog.example.com --status=active
Uitvoer: Een tabel met actieve plugins voor de site
blog.example.com
.
Naast het filteren van plugins op status=active
, kun je ook de volgende filters gebruiken:
inactive
: Plugins die zijn geïnstalleerd maar niet actief zijn.active-network
: Plugins die actief zijn op het netwerk.must-use
: Must-use plugins die automatisch worden geladen.
Plugins deactiveren
Plugins deactiveren is vaak nodig om problemen op te lossen of updates voor te bereiden. Met WP-CLI kun je plugins in het hele netwerk of voor specifieke sites deactiveren.
- Alle plugins in het netwerk deactiveren:
wp plugin deactivate --network --all
Resultaat: Alle plugins in het netwerk zijn gedeactiveerd.
- Specifieke plugins voor één site deactiveren:
wp plugin deactivate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
Invoervoorbeeld:
wp plugin deactivate akismet hello-dolly --url=blog.example.com
Resultaat: De plugins
akismet
enhello-dolly
zijn gedeactiveerd voor de siteblog.example.com
.
Plugins activeren
Gebruik deze commando’s om plugins te activeren voor het hele netwerk of voor individuele sites in je Multisite setup.
- Alle plugins in het netwerk activeren:
wp plugin activate --network --all
Resultaat: Alle plugins in het netwerk zijn geactiveerd.
- Specifieke plugins activeren voor een enkele site:
wp plugin activate <plugin-slug-1> <plugin-slug-2> --url=<site-url>
Invoervoorbeeld:
wp plugin activate akismet hello-dolly --url=blog.example.com
Resultaat: De plugins
akismet
enhello-dolly
zijn geactiveerd voor de siteblog.example.com
.
Plugins installeren
Plugins installeren met WP-CLI gaat snel en efficiënt. Eenmaal geïnstalleerd kunnen plugins worden geactiveerd voor afzonderlijke sites of voor het hele netwerk.
Het volgende commando kan worden gebruikt om een plugin voor het netwerk te installeren:
wp plugin install <plugin-slug>
Invoervoorbeeld:
wp plugin install akismet
Resultaat: De plugin akismet
is geïnstalleerd en klaar voor activering.
Plugins bijwerken
Houd je plugins up-to-date in je hele netwerk of voor specifieke sites met deze commando’s.
- Alle plugins in het netwerk bijwerken:
wp plugin update --network --all
Resultaat: Alle plugins in het netwerk worden bijgewerkt.
- Specifieke plugins in het netwerk bijwerken:
wp plugin update <plugin-slug-1> <plugin-slug-2> --network
Invoervoorbeeld:
wp plugin update akismet jetpack bbpress --network
Resultaat: De plugins
akismet
,jetpack
, enbbpress
worden in het netwerk bijgewerkt. - Een plugin voor een enkele site bijwerken:
wp plugin update --url=<site-url> <plugin-slug>
Invoervoorbeeld:
wp plugin update --url=blog.example.com hello-dolly
Resultaat: De plugin
hello-dolly
is bijgewerkt voor de siteblog.example.com
.
Plugins verwijderen
Het verwijderen van plugins is eenvoudig met WP-CLI, of je nu werkt aan een enkele site of aan een Multisite netwerk.
- Een plugin verwijderen uit de huidige WordPress context (netwerk of site):
wp plugin delete <plugin-slug>
Invoervoorbeeld:
wp plugin delete bbpress
Resultaat: De plugin
bbpress
wordt verwijderd. - Een plugin verwijderen voor een specifieke site in een Multisite:
wp plugin delete <plugin-slug> --url=<site-url>
Invoervoorbeeld:
wp plugin delete bbpress --url=blog.example.com
Resultaat: De plugin
bbpress
is verwijderd van de siteblog.example.com
.
Netwerkbeheer
Het beheren van sites binnen een WordPress Multisite netwerk is een cruciale taak. Hieronder staan veelgebruikte WP-CLI commando’s om je te helpen bij het efficiënt maken, beheren en verwijderen van sites en het afhandelen van caching operaties.
Sites maken
Nieuwe sites toevoegen aan je netwerk is eenvoudig met WP-CLI.
- Basiscommando: Maak een nieuwe site door een unieke slug op te geven.
wp site create --slug=<site-name>
Invoervoorbeeld:
wp site create --slug=blog
Resultaat: Een nieuwe site
blog.example.com
ofexample.com/blog
, afhankelijk van je netwerkinstelling, wordt aangemaakt en is automatisch actief.
- Geavanceerde opdracht: Als alternatief kunnen flags aan het commando worden toegevoegd. In het onderstaande voorbeeld wordt een site toegevoegd met een opgegeven sitetitel en sitebeheerder.
wp site create --slug=<site-name> --title="<site-title>" --email=<admin-email>
Invoervoorbeeld:
wp site create --slug=blog --title="Blog Site" [email protected]
Resultaat: Een site met de titel “Blog Site” is gemaakt met
[email protected]
als admin.
- Alle sites weergeven: Een tabel ophalen met site-ID’s, URL’s, aanmaakdata en laatst bijgewerkte data:
wp site list
Je kunt de lijst met sites ook verfijnen om alleen de URL’s van alle sites in het netwerk te krijgen:
wp site list --field=url
Uitvoer: Een lijst met URL’s voor elke site.
Sites legen en verwijderen
- De primaire site legen:
wp site empty
Uitvoer: Er verschijnt een bevestigingsprompt om alle inhoud voor de primaire site te verwijderen.
- Een losse site legen (verwijdert alle berichten, pagina’s, links en taxonomieën):
wp site empty --url=<site-url>
Invoervoorbeeld:
wp site empty --url=blog.example.com
Resultaat: Alle inhoud van
blog.example.com
wordt verwijderd, maar de site blijft intact. - Alle sites in het netwerk legen:
wp site list --field=url | xargs -n1 -I % wp site empty --url=% --yes
Resultaat: Dit commando start een loop door alle URL’s en gaat dan verder met het legen van de inhoud van elke site zonder dat je voor elke site toestemming hoeft te geven.
- Een enkele site verwijderen op ID:
wp site delete <site-id>
Invoervoorbeeld:
wp site delete 5
Resultaat: Site met ID
5
wordt verwijderd. - Meerdere sites verwijderen met bevestiging bypass:
wp site delete 2 --yes wp site delete 3 --yes
Resultaat: Sites met ID’s
2
en3
worden verwijderd. De vlag--yes
helpt om prompts over te slaan.
Cache wissen
Omdat veel cache types hier op verschillende manieren worden opgeslagen, gebruiken we de Kinsta Must-Use plugin. Deze wordt automatisch geïnstalleerd voor elke WordPress site in ons systeem.
Hiermee wordt alle cache gewist, inclusief site cache, edge cache, CDN cache en Redis cache.
- Alle cache wissen (site, edge, CDN en Redis):
wp kinsta cache purge --all
- Alleen site cache wissen:
wp kinsta cache purge --site
- CDN cache wissen:
wp kinsta cache purge --cdn
- Object cache wissen:
wp cache purge
Gebruikersbeheer
WP-CLI vereenvoudigt het beheer van gebruikers in een Multisite omgeving, zodat je taken snel en efficiënt kunt uitvoeren. Deze sectie behandelt veelvoorkomende handelingen voor gebruikersbeheer:
Gebruikers weergeven
Een lijst maken van gebruikers in een netwerk of een specifieke site is eenvoudig met WP-CLI.
- Alle gebruikers in het netwerk weergeven:
wp user list --network
Uitvoer: Een tabel met gebruikers-ID, login, weergavenaam, gebruikersnaam, registratiedatum en rol voor elke gebruiker of gebruikerslijstquery.
- Gebruikerslijst voor de primaire site:
wp user list
Resultaat: Toont een tabel met gebruikers voor de primaire site.
- Gebruikers weergeven voor een specifieke site (secundaire site):
wp user list --blog_id=<id> wp user list --url=<url>
Invoervoorbeeld:
wp user list --blog_id=6
Resultaat: Toont een tabel met alle gebruikers voor de site met Blog ID
6
.
Gebruikers aanmaken
In een Multisite netwerk worden gebruikers standaard geregistreerd op het netwerk. Hun rollen zijn afhankelijk van of ze de eerste gebruiker zijn die aan een site wordt toegevoegd of latere gebruikers. Gebruikersnamen moeten minstens vier tekens lang zijn.
- Een nieuwe gebruiker toevoegen aan de primaire site:
wp user create <username> <email>
Invoervoorbeeld:
wp user create johndoe [email protected]
Uitvoer: Er wordt een succesbericht weergegeven, inclusief een gegenereerd wachtwoord.
- Een nieuwe gebruiker toevoegen aan een specifieke site met een opgegeven rol:
wp user create <username> <email> --role=<role> --url=<url>
Invoervoorbeeld:
wp user create janedoe [email protected] --role=editor --url=blog.example.com
Uitvoer: De gebruiker
janedoe
is toegevoegd aan de siteblog.example.com
als “Editor”. - Meta van gebruikersaccount toevoegen tijdens het maken:
wp user create <username> <email> --display_name=<name> --nickname=<nickname>
Invoervoorbeeld:
wp user create johndoe [email protected] --display_name="John Doe" --nickname="Johnny"
Resultaat: Gebruiker
johndoe
is aangemaakt met een displaynaamJohn Doe
en nicknameJohnny
.
Gebruiker bijwerken
Het bijwerken van gebruikersinformatie, zoals rollen of wachtwoorden, gaat snel met WP-CLI.
- Gebruikersrollen wijzigen (promoveren of downgraden):
wp user update <username|email|user_id> --role=<role>
Invoervoorbeeld:
wp user update johndoe janedoe adminuser --role=super-administrator
Resultaat: Gebruikers
johndoe
,janedoe
, enadminuser
worden gepromoveerd tot Super Administrators. - Een gebruikerswachtwoord resetten of wijzigen:
wp user update <username> --user_pass=<new_password>
Invoervoorbeeld:
wp user update johndoe --user_pass=securePassword2024
Resultaat: Het wachtwoord voor
johndoe
is bijgewerkt. - Daisy-chained commando’s: Met WP-CLI kun je meerdere acties combineren in één opdracht, waardoor je tijd bespaart bij het bewerken van gebruikers. Je kunt bijvoorbeeld het wachtwoord en de rol van een gebruiker tegelijkertijd bijwerken.
wp user update <user> --user_pass=<new_password> --role=<status>
Invoervoorbeeld:
wp user update johndoe --user_pass="newPassword2024" --role=editor
Resultaat: Het wachtwoord voor gebruiker
johndoe
is bijgewerkt totnewPassword2024
, en hun rol is gewijzigd in “Editor”.
Gebruikersmeta beheren
Met gebruikersmeta kun je metagegevens voor gebruikersaccounts toevoegen, ophalen of verwijderen.
- Gebruikersmeta ophalen:
wp user meta get <username> <meta_key>
Invoervoorbeeld:
wp user meta get johndoe nickname
Uitvoer: Toont de waarde van de metasleutel
nickname
voor gebruikerjohndoe
. - Gebruikersmeta toevoegen:
wp user meta add <username> <meta_key> <meta_value>
Invoervoorbeeld:
wp user meta add johndoe display_name "Mr. John Doe"
Resultaat:
Mr. John Doe
is ingesteld als de weergavenaam voor gebruikerjohndoe
. - Gebruikersmeta verwijderen:
wp user meta delete <username> <meta_key>
Invoervoorbeeld:
wp user meta delete johndoe display_name
Resultaat: Dit commando verwijdert de metasleutel
display_name
voor de gebruikerjohndoe
.
Gebruikers verwijderen
Gebruikers verwijderen uit het netwerk of van specifieke sites is erg efficiënt met WP-CLI.
- Een gebruiker uit het netwerk verwijderen:
wp user delete <username|user_id> --network
Invoervoorbeeld:
wp user delete johndoe --network
Resultaat: De gebruiker
johndoe
wordt verwijderd uit het netwerk. - Een gebruiker van een specifieke site verwijderen:
wp user delete <username|user_id> --url=<site-url>
Invoervoorbeeld:
wp user delete johndoe --url=mysite.example.com
Resultaat: De gebruiker
johndoe
wordt verwijderd van de sitemysite.example.com
.
Beheer van databases
WP-CLI biedt een krachtig alternatief voor tools als phpMyAdmin voor het beheren van je database. Deze sectie behandelt veelvoorkomende databasebewerkingen die je kunt uitvoeren met WP-CLI:
Een database exporteren
Met WP-CLI kun je je database exporteren als een SQL bestand. Het geëxporteerde bestand wordt opgeslagen in de hoofdmap van je WordPress installatie.
wp db export
Resultaat: Er wordt een SQL bestand gemaakt in de hoofdmap.
Als het geëxporteerde bestand een onhandige naam heeft, kun je het hernoemen met het volgende commando:
wp eval 'if ( rename( "unganglyfilename.sql", "newfilename.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
Invoervoorbeeld:
wp eval 'if ( rename( "cilawawugo4504_gTr4kSXUsmJ9FNauVnPb-2024-11-17-9545b3f.sql", "network-db.sql" ) ) { echo "File renamed successfully."; } else { echo "Failed to rename file."; }'
Resultaat: Bestand cilawaw…nPb--9545b3f.sql
is hernoemd naar network-db.sql
.
Een database downloaden
Gebruik het commando curl
om het geëxporteerde databasebestand naar je lokale machine te downloaden.
curl <remote-url> -o <local-path>
Invoervoorbeeld:
curl example.com/network-db.sql -o ~/Downloads/network-db.sql
Resultaat: Het bestand network-db.sql
wordt gedownload naar je lokale Downloads
directory.
Een database uploaden
Je kunt een databasebestand uploaden naar de hoofdmap van je Multisite installatie met het commando scp
.
scp <local-path-to-file> <username>@<remote-server>:<remote-path>
Invoervoorbeeld:
scp ~/Downloads/network-db.sql [email protected]:/var/www/example.com/public_html
Resultaat: Het bestand network-db.sql
wordt na authenticatie geüpload naar de hoofdmap van je WordPress installatie.
Een database importeren
Voordat je een database importeert, moet je mogelijk je bestaande gegevenstabellen resetten.
- Gegevenstabellen resetten:
wp db reset
Resultaat: Alle gegevenstabellen in de database worden geleegd.
- De database importeren:
wp db import <file-name.sql>
Invoervoorbeeld:
wp db import network-db.sql
Resultaat: Het bestand
network-db.sql
vult de geleegde gegevenstabellen. - Het geïmporteerde SQL bestand verwijderen: Verwijder om veiligheidsredenen het SQL bestand na het importeren:
rm <file-name.sql>
Praktijkvoorbeelden
We kunnen veel commando’s bedenken die je workflow versnellen en vereenvoudigen. Hier zijn drie voorbeelden. Hoewel sommige van deze commando’s complexer zijn, bouwen ze voort op eenvoudigere commando’s om nuttige bewerkingen uit te voeren.
Plugins installeren en activeren en tegelijkertijd miniaturen regenereren
Deze opdracht doorloopt alle sites in het netwerk, installeert en activeert twee plugins en regenereert miniaturen voor elke site.
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin activate <plugin slug> <plugin slug> --url=% && wp media regenerate --url=%'
Invoervoorbeeld:
wp site list --field=url | xargs -n1 -I % sh -c 'wp plugin install akismet bbpress --activate --url=% && wp media regenerate --url=%'
Resultaat: De plugins Akismet
en BBPress
zijn geïnstalleerd en geactiveerd op alle sites, en de afbeeldingsminiaturen worden opnieuw gegenereerd.
Een aangepast metaveld toevoegen voor alle gebruikers
Deze opdracht doorloopt alle sites, haalt de lijst met gebruikers op en voegt voor elke gebruiker een aangepast metaveld toe.
wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} <meta-key> <meta-value> --url=%'
Invoervoorbeeld:
wp site list --field=url | xargs -n1 -I % sh -c 'wp user list --fields=ID --url=% --format=csv | tail -n +2 | xargs -n1 -I {} wp user meta add {} favorite_color "" --url=%'
Resultaat: Een aangepast metaveld, favorite_color
, is toegevoegd voor alle gebruikers op alle sites.
Om het veld favorite_color
weer te geven, moet je je bestand functions.php
gebruiken of een aangepaste plugin maken.
Een installatie op één site omzetten naar een Multisite
WP-CLI maakt het eenvoudig om een standalone WordPress site om te zetten in een Multisite netwerk.
wp core multisite-convert
Resultaat: De enkele site wordt omgezet in een Multisite netwerk.
Zorg ervoor dat je voor de conversie alle plugins deactiveert.
Na het converteren van de site moet je de netwerk URL’s configureren in het bestand wp-config.php
. Je kunt kiezen tussen het gebruik van subdomeinen (bijv. site.voorbeeld.com) of subdirectories (bijv. voorbeeld.com/site). Controleer daarnaast het bestand .htaccess
, omdat de URL herschrijfregels (behandeld door de mod_rewrite module in Apache) mogelijk handmatig moeten worden bijgewerkt om ervoor te zorgen dat je permalinks en sitestructuur correct werken.
Samenvatting
Deze handleiding benadrukt de kracht en flexibiliteit van WP-CLI voor het beheren van WordPress Multisite omgevingen, waardoor het een essentieel hulpmiddel is voor ontwikkelaars en beheerders die op zoek zijn naar efficiëntie en controle. WP-CLI vereenvoudigt complexe taken met precisie en snelheid, van het beheren van plugins, gebruikers en databases tot het uitvoeren van geavanceerde bewerkingen zoals het converteren van enkele sites naar Multisite.
Kinsta biedt een onschatbare en uitbreidbare WP-CLI tool die naadloos beheer van WordPress Multisite netwerken mogelijk maakt. Of je nu werkt op live of testomgevingen of onze lokale ontwikkeltool DevKinsta gebruikt, WP-CLI is direct beschikbaar om je workflow te stroomlijnen.
Begin met het maken van sites, het toevoegen van plugins, gebruikers en meer met WP CLI!
Laat een reactie achter