Under större delen av sin livstid har WordPress byggts med en enkel kodbas med lite objektorienterad PHP som det mest abstrakta systemet. Under de senaste åren håller dock detta på att förändras till det bättre. Från enhetstestning till CSS-förbearbetning och kommandoradsverktyg dyker fler och fler utvecklarvänliga tillgångar upp. I den här artikeln tittar vi på en av mina favoriter: WP-CLI.

WP-CLI har varit ett projekt med öppen källkod i över ett decennium, och underhålls främst av Daniel Bachhuber sedan 2003. Det primära målet med WP-CLI är att hjälpa till att snabba upp WordPress-utvecklares arbetsflöden.

Under årens lopp har projektet vuxit till att bli så mycket mer! Det blir nu även ett krav för andra öppen källkods-projekt som Trellis och Bedrock. Från och med januari 2017 har WP-CLI officiellt flyttat till WordPress.org och Alain Schlesser är nu också med och underhåller det.

WP-CLI v2 släpptes den 8 augusti 2018, så vi kommer också att utforska några av de förändringar och nya funktioner som den nya versionen förde med sig. Om du är en Kinsta-klient är WP-CLI v2.0.1 som standard installerat på alla våra servrar, använd helt enkelt SSH för att få åtkomst till din server för att komma igång. SSH-åtkomst ingår i alla våra hostingplaner (Det går inte att ansluta via SSH? Så fixar du SSH-felet ”Anslutning nekad”).

Skaffa WP-CLI

Det lägsta PHP-kravet på WP-CLI v2.0. 0 har höjts till PHP 5.4. Även om det här är ett steg i rätt riktning rekommenderar vi att du åtminstone kör en version av PHP som stöds, vilket betyder 5.6 eller högre. PHP 7.2 är standard för alla Kinsta-installationer, av både säkerhets- och prestandaskäl. Vi har även PHP 7.3 och 7.4 tillgängliga.

För att komma igång måste du installera WP-CLI – en mycket enkel process. Stegen för Linux och OSX är som följer: skriv dessa tre kommandon, ett efter ett.

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

Om något går fel eller om du använder Windows, kan du läsa de grundläggande instruktionerna eller de alternativa installationsmetoderna.

När du är klar bör du kunna utfärda kommandot wp --info och få ett meningsfullt svar.

Processen är likadan om du vill installera WP-CLI på din server. Kom ihåg att WP-CLI redan är installerat för Kinsta klienter. Inte säker på vilken version du kör för närvarande? Du kan alltid utfärda kommandot wp cli version för att ta reda på det.

Grunderna i WP-CLI

Att ha tillgång till WordPress från kommandoraden är kraftfullt i sig men kan ge dig ännu mer kontroll och hastighetsvinster om du använder bash-skript.

Bash-skript låter dig köra en sekvens av kommandon med ett enda kommando. Du kan skriva bash install-and-setup.sh och få följande resultat:

  • Ladda ner WordPress
  • Skapa och fyll wp-config.php
  • Skapa databasen
  • Installera WordPress
  • Installera och aktivera eventuella plugins du behöver
  • Installera och aktivera ett tema
  • Ladda ner och lägg till testinnehåll

Detta skulle vara de steg jag skulle ta för att skapa en ny testmiljö för ett projekt. Normalt skulle det ta mig 5-10 minuter åtminstone, särskilt om det finns är plugins inblandade. Att utfärda ett enda kommando är som du ser mycket snabbare.

WP-CLI-kommandon i Allmänhet

Om du är van vid att arbeta i terminalen är WP-CLI inget speciellt. Kommandon börjar alltid med wp följt av ett kommando och underkommando, följt av obligatoriska och valfria parametrar, som detta:

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

Låt oss installera ett tema för att se hur det fungerar med ett riktigt kommando:

wp theme install twentyseventeen --activate

Detta kommer att installera och aktivera temat Twenty Seventeen på din WordPress-installation.

Observera att WP-CLI kommer att arbeta med den WordPress-installation du för närvarande använder i terminalen. Om du byter katalog för att gå till en annan WordPress-installation, kommer det att arbeta med den istället.

Användbara Exempel

Det var WP-CLI i ett nötskal! Även om det finns flera avancerade saker du kan göra, och som vi kommer till om ett ögonblick, vet du redan nu tillräckligt för att komma igång och göra det du behöver göra. Jag rekommenderar att du tittar på kommandolistan, och provar några av dem. Vi tar en titt på några användbara saker här, och går sedan vidare till att använda WP-CLI över SSH och att använda bash-skript.

Installera WordPress

Jag använder ofta WP-CLI för att ställa in testmiljöer, vars första steg är en standardinstallation. Här är en lista över de kommandon jag kör:

wp core download
wp core config --dbname=mydbname --dbuser=mydbuser --dbpass=mydbpass --dbhost=localhost --dbprefix=whebfubwef_ --extra-php <<PHP
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
PHP
wp db create
wp core install --url=http://siteurl.com --title=SiteTitle --admin_user=username --admin_password=mypassword [email protected]

Ser du hur coolt det här är! Den senaste versionen av WordPress laddas ner med det första kommandot. Det andra kommandot ställer in konfigurationsfilen med databasåtkomst och ytterligare PHP i slutet. De extra konstanterna ser till att vi har våra felsökningsalternativ för testning. Här är en detaljerad guide om du vill lära dig mer om felsökning av WordPress.

Det tredje kommandot skapar databasen (WP-CLI använder databasåtkomstinformationen från konfigurationsfilen) och slutligen installerar vi WordPress med ett par parametrar.

Installera om WordPress-kärnan

Du kan också installera om WordPress-kärnan med WP-CLI. Följande kommando skulle ladda ner WordPresskärnan utan standardteman och plugins.

wp core download --skip-content --force

Ändra WordPress-URL

Det finns många anledningar till att du kanske behöver eller vill ändra din WordPress-URL. Kanske byter du domän, flyttar till en subdomän, uppdaterar från www till icke-www, flyttar omkring filer, eller till och med migrerar från HTTP till HTTPS. Oavsett kan du enkelt använda kommandot wp option update för detta. Här är ett exempel nedan:

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

Lista över Nuvarande Plugins med Detaljer

För att få en lista över aktuella plugins som är installerade på en webbplats, använd bara följande kommando. I det här exemplet kan du se att vi har pluginsen Schema och Yoast SEO installerade. Det kommer också att returnera status (aktiv/inaktiverad), om det finns en uppdatering tillgänglig, och den aktuella versionen.

wp plugin list
WP-CLI pluginlista
WP-CLI pluginlista

Installera Flera Plugins

För att installera flera plugins kan du helt enkelt stapla på parametrar. Här är ett exempel som hämtar och aktiverar 3 plugins:

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

Observera att plugin-namnen kommer från deras namn i arkivet. Det enklaste sättet att ta reda på dem är att besöka deras sida och titta på webbadressen eller att använda wp plugin search searcterm som ger dig en lista i terminalen.

WordPress-pluginarkivets webbadress
WordPress-pluginarkivets webbadress

Du kan också installera äldre versioner av WordPress-plugins om det behövs med attributet --version.

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

Ännu coolare är att du kan installera plugins från fjärrfiler, inte bara arkivet, vilket är praktiskt om du utvecklar ett plugin, eller använder ett premiumplugin. Följande kommando installerar två plugins från arkivet och ett från en Amazon S3-server.

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

Inaktivera Flera Plugins

För att inaktivera ett enda plugin kan du köra följande kommando.

wp plugin deactivate wordpress-seo

För att inaktivera alla dina plugins på en gång, kör följande kommando.

wp plugin deactivate --all
WP-CLI avaktivera alla plugins
WP-CLI avaktivera alla plugins

Det här kommandot ovan kan vara praktiskt om du felsöker kompatibilitetsproblem och helt enkelt behöver inaktivera alla plugins på en och samma gång. Du kan sedan gå tillbaka och aktivera dem ett efter ett, och testa efterhand.

Uppdatera Plugins

Du kan också manuellt uppdatera WordPress-plugins. Exempel nedan:

wp plugin update wordpress-seo
WP-CLI manuellt uppdatera WordPress-plugin
WP-CLI manuellt uppdatera WordPress-plugin

Sök och Ersätt i Databasen

En av de främsta anledningarna till att det är svårt att migrera en webbplats genom att bara kopiera-klistra in en databas är att databasen innehåller serialiserade arrayer. Om du behöver ersätta alla instanser av http://testsite.com med http://livewebsite.com kommer dina serialiserade arrayer inte att vara till någon nytta eftersom strängantalet inte matchar.

Kommandot search-replace avserialiserar arrayerna först, utför sedan en sök och ersätt och återserialiserar sedan arrayerna. Du kan göra detta med ett enkelt kommando:

wp search-replace oldstring newstring

Ytterligare parametrar låter dig göra mycket mer, inklusive att förhandsgranska vad som kommer att ersättas med hjälp av --dry-run.

Import och Export

Det finns två sätt att exportera innehåll med WP-CLI. Du kan skapa en XML-fil, precis som WordPress exportverktyg gör, eller så kan du exportera/importera den råa databasen. Jag tycker att det senare är mycket mer användbart för min dagliga rutin, det är praktiskt när du synkroniserar webbplatser.

wp db export är allt du behöver göra för att skapa en SQL-fil och wp db import file.sql är allt du behöver för att importera den. Det fungerar perfekt, men var noga med att inte skriva över något du behöver, import kommer i princip dumpa den befintliga databasen och använda den medföljande SQL-filen i stället.

Hantera Roller och Funktioner

WP-CLI kan hantera roller för dig ganska enkelt med kommandot wp role. Det här är ganska coolt om du vill testa hur ditt plugin fungerar med anpassade roller, men du skapar inte faktiskt rollerna inom ditt plugin.

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

Kommandona ovan skapar en ny roll (Organizer, eller arrangör), lägger till alla funktioner från redigeringsrollen till den och lägger sedan till en ny funktion: hantera event. Med rätt kommandon kan du använda WP-CLI för att ändra ditt WordPress-lösenord.

Generera Testdata

Jag älskar alla slags fejkfunktioner – de som lägger till dummy-innehåll till din webbplats som du kan använda för tester. WP-CLI har ett par av dessa inbyggda, och här är några funktioner som kommer att generera användare, termer och inlägg.

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

Hantera WP-Cron-händelser

Du kan hantera WP-Cron-händelser och eller ett WordPress-Cronjobb i WP-CLI. Till exempel kommer följande kommando att ge dig din nuvarande cron-händelselista.

wp cron event list
wp-cron event list
wp-cron event list

Radera Transienter

Du kan även ta bort och rensa bort en eller alla transienter med följande kommando.

wp transient delete --all

Om du kör multisite behöver du ett lite mer komplicerat kommando. Som standard kollar kommandot endast wp_options-tabellen. Det kollar inte 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

Städa upp i wp_options-tabellen

Wp_options-tabellen kan vara en vanlig syndabock för långsamma förfrågningstider på din webbplats på grund av autoladdade data som är kvar från tredjepartplugins och teman. Kolla in denna jättebra artikel från WP Bullet om hur du använder WP-CLI att rensa upp i din wp_options tabell.

Ta bort WordPress-revideringar

På stora webbplatser kan WordPress-revideringar mycket snabbt bli till tusentals rader i din databas som inte behövs. Du kan ta bort inläggsrevideringar med WP-CLI. Här är ett exempel på kommandot:

$ wp post delete $(wp post list --post_type='revision' --format=ids)
WP-CLI ta bort WordPress-revideringar
WP-CLI ta bort WordPress-revideringar

Kontrollera Underhållsläget

Från och med WP-CLI v2.2.0 kan du nu kontrollera underhållsläget på din WordPress-webbplats. Exempel:

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

Indexering av data med Elasticsearch

Elasticsearch är en fulltextsökmotor med öppen källkod. Det används för att indexera data och genomsöka dessa data otroligt snabbt. Vi erbjuder detta som tillägg för Kinsta-klienter. Du kan använda ElasticPress WP-CLI-kommandon för att utföra indexering över SSH. Exempel:

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

Arbeta med Flerspråkiga Webbplatser

WP-CLI v2.0.0 innehåller en ny familj av kommandon, wp i18n för er som arbetar med flerspråkiga webbplatser. Till exempel kan du skapa en POT-fil för ett WordPress-plugin eller tema.

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

Se i18n-kommandodokumentationen.

Att använda WP-CLI med WooCommerce

Jobbar du med e-handelswebbplatser? 🛒 Vi rekommenderar att du kollar in Robot Ninjas fantastiska WP-CLI WooCommerce-utvecklingsguide för snabba och enkla kommandon du kan använda. Att generera en lista över kunder, order, och till och med skapa mass-produkter är helt möjligt med WP-CLI.

Att Fjärranvända WP-CLI

En av de bästa sakerna som du kan göra med WP-CLI är hantera din fjärrinstallationer för WordPress Detta är verkligen en webbplatshanterares dröm.

För att smidigt köra WP-CLI-kommandon på en fjärrserver via SSH behövde du tidigare tilläggskommandot wp-cli-ssh. Men från och med v0.24.0, är detta nu en del av själva WP-CLI! 👏

Viktigt: Du behöver WP-CLI installerat både på datorn du kör kommandot från och på din server.

Konfigurera Fjärrservrar

Du kan konfigurera dina servrar globalt eller lokalt. För att konfigurera dem globalt använd config.yml-filen. Du kan också använda wp-cli.yml eller wp-cli.local.yml-filerna i din nuvarande arbetskatalog.

Konfigurationen av servrar fungerar ungefär så här, klistra in det här i en av de nämnda filerna:

ssh:

  staging:
    cmd: ssh %pseudotty% [email protected] %cmd%
    url: http://myseite.com
    path: /www/path/to/site/root

När allt detta är gjort kan du skriva följande kommando för att uppdatera WordPress på din fjärr-webbplats:

wp ssh core update --host=staging

Om du äger eller hanterar många webbplatser, tror jag att du kan se att det här är fantastiskt! Skriptet kommer att be om ett lösenord, men om du använder RSA-nycklar för att logga in kan du hoppa över det också. Ta en titt på den här artikeln för att konfigurera det.

Att använda Bash-skript

Bash-skript sparar dig ännu mer tid genom att automatisera uppgifter. Kommer du ihåg hur vi behövde skriva en hel del kommandon för att installera WordPress? Du kan göra det med ett enda bash-skript. Öppna en katalog och skapa en install.sh-fil där. Klistra in samma kod som vi använde innan i filen och spara den.

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

Allt du behöver göra nu är att skriva in bash install.sh och allt kommer att göras åt dig, utan inblandning från användaren. Om du hanterar många webbplatser kan du ställa in alla dina miljöer och skapa ett bash-skript så här:

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

När en ny WordPress-version kommer ut kan det spara mycket tid! Eftersom du kan göra vad du vill med WP-CLI kan du även uppdatera teman och plugins regelbundet på ett antal klientwebbplatser på en och samma gång.

Sammanfattning

WP-CLI är verkligen utvecklarens och webbplatshanterarens dröm. Som utvecklare kan vi skapa testwebbplatser i ett nafs, lägga till testinnehåll och trolla med import/export på alla möjliga sätt. Webbplatshanterare kan sköta webbplatsuppdateringar och andra uppgifter för flera webbplatser med enkla kommandon. Se till att kolla in WP-CLI v2:s release-anteckningar!

Om du inte redan har provat WP-CLI uppmanar jag dig att ge det en chans. Det finns också en massa community-kommandon, som WP-CLI-SSH som lägger till ännu fler jättebra funktioner! Om du stöter på problem, se till att kolla in WP-CLI:s dokumentation över vanliga problem.

Glöm inte att Kinstas Google Cloud-baserade arkitektur stöder WP-CLI direkt vid start. Om du vill prova den mest moderna WordPress-hostingarkitekturen och få tillgång till bra verktyg som WP-CLI, testa vår hanterade WordPress-hosting.

Daniel Pataki

Hi, my name is Daniel, I'm the CTO here at Kinsta. You may know me from Smashing Magazine, WPMU Dev, Tuts+ and other WordPress/Development magazines. Aside from WordPress and PHP I spend most of my time around Node, React, GraphQL and other technologies in the Javascript space.

When not working on making the best hosting solution in the Universe I collect board games, play table football in the office, travel or play guitar and sing in a pretty bad band.