I det meste af sin levetid er WordPress blevet bygget ved hjælp af en simpel kodebase med et strejf af objektorienteret PHP som det mest abstrakte system. I de seneste par år er dette dog ved at ændre sig til det bedre. Fra enhedstest til CSS-forbehandling og kommandolinjeværktøjer dukker der flere og flere udviklervenlige aktiver op. I denne artikel vil vi se på en af mine favoritter: WP-CLI.

WP-CLI har været et open source-projekt i over et årti og er primært blevet vedligeholdt af Daniel Bachhuber siden 2003. Det primære mål med WP-CLI er at hjælpe med at fremskynde WordPress-udviklerens arbejdsgange.

I løbet af årene har projektet udviklet sig til så meget mere! Det er nu endda ved at blive et krav til andre open source-projekter som Trellis og Bedrock. Fra januar 2017 flyttede WP-CLI officielt til WordPress.org og bliver nu også medvedligeholdt af Alain Schlesser.

WP-CLI v2 blev frigivet den 8. august 2018, så vi vil også udforske nogle af ændringerne og de nye funktioner. Hvis du er Kinsta-klient, er WP-CLI v2.0.1 installeret som standard på alle vores servere, du skal blot SSH’e ind på din server for at komme i gang. SSH-adgang er inkluderet i alle vores hostingplaner (Kan du ikke oprette forbindelse via SSH? Så ret SSH-fejlen “Connection Refused” (forbindelsen afvist).

Få WP-CLI

Minimumskravet til PHP på WP-CLI v2.0.0.0 er blevet opjusteret til PHP 5.4. Selv om dette er et godt skridt fremad, anbefaler vi, at du i det mindste kører en understøttet version af PHP, dvs. 5.6 eller højere. PHP 7.2 er standard på alle Kinsta-installationer, både af sikkerheds- og ydelsesmæssige årsager. Vi har også PHP 7.3 og 7.4 til rådighed.

For at komme i gang skal du installere WP-CLI – en meget enkel proces. Trinene for Linux og OSX er følgende, udsted disse tre kommandoer efter hinanden:

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

Hvis noget går galt, eller hvis du er på Windows, henvises til de grundlæggende instruktioner eller de alternative installationsmetoder.

Når det er gjort, bør du være i stand til at sende kommandoen wp --info og få et svar der giver mening.

Processen er den samme, hvis du ønsker at installere WP-CLI på din server. Husk, at for Kinsta-klienter er WP-CLI allerede installeret. Er du ikke sikker på, hvilken version du kører i øjeblikket? Du kan altid sende kommandoen wp cli version for at finde ud af det.

Det grundlæggende i WP-CLI

At have adgang til WordPress fra kommandolinjen er kraftfuldt i sig selv, men kan give dig endnu mere kontrol og hastighedsgevinster, når du bruger bash-scripts.

Bash-scripts giver dig mulighed for at køre en sekvens af kommandoer med en enkelt kommando. Du kunne skrive bash install-and-setup.sh og få følgende resultat:

  • Download WordPress
  • Opret og udfyld wp-config.php
  • Opret databasen
  • Installer WordPress
  • Installer og aktivér eventuelle plugins, du har brug for
  • Installere og aktivere et tema
  • Hent og tilføj testindhold

Dette ville være de trin, jeg ville tage for at oprette et nyt testmiljø for et projekt. Normalt ville det tage mig mindst 5-10 minutter, især hvis der er et par plugins involveret. Det er naturligvis meget hurtigere at udsende en enkelt kommando.

WP-CLI-kommandoer i almindelighed

Hvis du er vant til at arbejde i terminalen, er der ikke noget særligt ved WP-CLI for dig. Kommandoer starter altid med wp efterfulgt af en kommando og en underkommando, efterfulgt af obligatoriske og valgfrie parametre, noget i stil med dette:

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

Lad os installere et tema for at se, hvordan det fungerer med en rigtig kommando:

wp theme install twentyseventeen --activate

Dette vil installere og aktivere Twenty Seventeen-temaet på din WordPress-installation:

Bemærk, at WP-CLI vil fungere med den WordPress-installation, du er i øjeblikket i terminalen. Hvis du skifter mappe for at gå til en anden WordPress-installation, vil det fungere med denne installation.

Nyttige eksempler

Det var WP-CLI i en nøddeskal! Selv om der er et par avancerede ting, du kan gøre, som vi kommer til om lidt, ved du allerede nok til at komme i gang og gøre, hvad du har brug for. Jeg anbefaler at tage et kig på listen over kommandoer, og prøv nogle af dem. Vi vil tage et kig på nogle nyttige ting her, og derefter gå videre til at bruge WP-CLI over SSH og bruge bash-scripts.

Installation af WordPress

Jeg bruger WP-CLI meget til at oprette testmiljøer, hvor det første trin er en vanilla-installation. Her er en liste over kommandoer, som jeg kører:

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]

Bemærk, hvor fedt det er! Den nyeste version af WordPress hentes ved hjælp af den første kommando. Den anden kommando sætter konfigurationsfilen op med databaseadgang og noget ekstra PHP til sidst. De ekstra konstanter sørger for, at vi har vores debugging-muligheder slået til for at teste. Vi har en detaljeret guide her, hvis du gerne vil lære mere om debugging af WordPress.

Den tredje kommando opretter databasen (WP-CLI bruger databasen adgangsoplysningerne fra config-filen) og til sidst installerer vi WordPress ved hjælp af et par parametre.

Geninstaller WordPress Core

Du kan også geninstallere WordPress core ved hjælp af WP-CLI. Følgende kommando ville downloade WordPress core uden standardtemaer og plugins.

wp core download --skip-content --force

Ændre WordPress URL

Der er mange grunde til, at du måske har brug for eller ønsker at ændre din WordPress URL. Måske skifter du domæne, flytter til et subdomæne, opdaterer fra www til ikke-www, flytter filer rundt eller endda migrerer fra HTTP til HTTPS. Uanset hvad tilfældet er, kan du nemt bruge kommandoen wp option update til dette. Her er et eksempel nedenfor:

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

Liste over aktuelle plugins med detaljer

For at få en liste over de aktuelle plugins, der er installeret på et websted, skal du blot bruge følgende kommando. I dette eksempel kan du se, at vi har Schema- og Yoast SEO-plugin installeret. Den returnerer også status (aktiv/deaktiveret), om der er en opdatering tilgængelig, og den aktuelle version.

wp plugin-liste
WP-CLI plugin liste
WP-CLI plugin-liste

Installation af flere plugins

For at installere flere plugins kan du simpelthen stable på parametre. Her er et eksempel, der downloader og aktiverer 3 plugins:

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

Bemærk, at plugin-navnene kommer fra deres navn i repository. Den nemmeste måde at finde ud af det på er at besøge deres side og se på URL’en eller at bruge wp plugin search searchterm, som giver dig en liste i terminalen.

WordPress plugin repository URL

Du kan også installere ældre versioner af WordPress-plugins, hvis det er nødvendigt, med attributten --version.

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

Endnu sejere er det, at du kan installere plugins fra fjernfiler, ikke kun fra depotet, hvilket er praktisk, hvis du udvikler et plugin eller bruger et premium-plugin. Følgende kommando installerer to plugins fra depotet og et fra en Amazon S3-server.

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

Deaktivere flere plugins

For at deaktivere et enkelt plugin kan du køre følgende kommando.

wp plugin deactivate wordpress-seo

Hvis du vil deaktivere alle dine plugins på én gang, kan du køre følgende kommando.

wp plugin deactivate --all
WP-CLI deaktivere alle plugins
WP-CLI deaktivere alle plugins

Denne ovenstående kommando kan være praktisk, hvis du er ved at fejlfinde kompatibilitetsproblemer og blot har brug for at deaktivere alle plugins i et hug. Du kan derefter gå tilbage og aktivere dem et efter et og teste, mens du gør det.

Opdater plugins

Du kan også manuelt opdatere WordPress-plugins manuelt. Eksempel nedenfor:

wp plugin update wordpress-seo
WP-CLI opdaterer manuelt WordPress-plugin
WP-CLI opdaterer manuelt WordPress-plugin

Database search and replace

En af hovedårsagerne til, at det er svært at migrere et websted ved blot at kopiere og indsætte en database, er, at databasen indeholder serialiserede arrays. Hvis du skal erstatte alle forekomster af http://testsite.com med http://livewebsite.com, vil dine serialiserede arrays ikke give mening, fordi stringtællingen ikke vil passe sammen.

Kommandoen search-replace afserialiserer først arrays, udfører derefter en search and replace og serialiserer derefter arraysene igen. Du kan få dette gjort med en simpel kommando:

wp search-replace oldstring newstring

Yderligere parametre giver dig mulighed for at gøre meget mere, herunder at få et eksempel på, hvad der vil blive erstattet ved hjælp af --dry-run.

Import og eksport

Der er to måder at eksportere indhold på med WP-CLI. Du kan oprette en XML-fil, ligesom WordPress-eksportværktøjet gør, eller du kan eksportere/importere den rå database. Jeg finder det sidste meget mere nyttigt i min daglige rutine, det er praktisk når jeg synkroniserer websteder.

wp db export er alt, hvad du skal gøre for at oprette en SQL-fil, og wp db import file.sql er alt, hvad du skal bruge for at importere den. Virker som en charme, bare vær forsigtig med ikke at overskrive noget du har brug for, import vil dybest set dumpe den eksisterende database og bruge den medfølgende SQL-fil i stedet.

Tilføj, opdater, slet brugere

Du kan tilføje, opdatere og slette brugere med WP-CLI.

# List user IDs
$ wp user list --field=ID
1

# Create a new user.
$ wp user create john [email protected] --role=author
Success: Created user 3.
Password: HOh897%*(&^R8

# Update an existing user.
$ wp user update 123 --display_name=Beth --user_pass=bethpass
Success: Updated user 123.

# Delete user 123 and reassign posts to user 443
$ wp user delete 123 --reassign=443
Success: Removed user 123 from http://example.com

Administrer roller og evner

WP-CLI kan administrere roller for dig ret nemt ved hjælp af kommandoen wp role. Dette er ret cool, hvis du vil teste, hvordan dit plugin fungerer med brugerdefinerede roller, men du opretter faktisk ikke rollerne i dit plugin.

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

Ovenstående kommandoer vil oprette en ny rolle (Organizer), tilføje alle kapaciteter fra editor-rollen til den og derefter tilføje en ny kapacitet: manage-events. Med de rigtige kommandoer kan du bruge WP-CLI til at ændre dit WordPress password.

Generer testdata

Jeg elsker alle slags faker-lignende funktioner – dem, der tilføjer dummy-indhold til dit websted, som du kan bruge til test. WP-CLI har et par af disse indbygget, her er et par funktioner, der genererer brugere, termer og indlæg.

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

Administrer WP-Cron-hændelser

Du kan administrere WP-Cron-hændelser og eller et WordPress Cron-job i WP-CLI. For eksempel vil følgende kommando give dig din aktuelle cron-hændelsesliste.

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

Slet overgangsforanstaltninger

Du kan endda slette og rydde en eller alle transienter ved hjælp af følgende kommando.

wp transient delete --all

Hvis du kører multisite, har du brug for en lidt mere kompliceret kommando. Som standard kontrollerer kommandoen kun tabellen wp_options. Den tjekker ikke wp_1_options, wp_2_options, osv.

wp transient delete --all --network && wp site list --field=url | xargs -n1 -I % wp --url=% transient delete --all

Ryd op i wp_options-tabellen

Tabellen wp_options kan være en almindelig synder for langsomme forespørgselstider på dit websted på grund af autoloaded data, der efterlades fra plugins og temaer fra tredjepart. Tjek denne gode artikel fra WP Bullet om, hvordan du bruger WP-CLI til at rydde op i din wp_options tabel.

Slet WordPress-revisioner

På store websteder kan WordPress-revisioner meget hurtigt tilføje op til tusindvis af rækker i din database, som ikke er nødvendige. Du kan slette indlægsrevisioner med WP-CLI. Her er et eksempel på kommandoen:

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

Kontrol vedligeholdelsestilstand

Fra og med WP-CLI v2.2.0 kan du nu styre vedligeholdelsestilstanden på dit WordPress-websted. Eksempel:

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

Indeksering af data med Elasticsearch

Elasticsearch er en open source fuldtekst-søgemaskine. Den bruges til at indeksere data og søge i disse data utrolig hurtigt. Vi tilbyder dette som en add-on til Kinsta-kunder. Du kan bruge ElasticPress WP-CLI-kommandoer til at udføre indeksering over SSH. Eksempel:

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

Arbejde med flersprogede websteder

WP-CLI v2.0.0.0 indeholder en ny familie af kommandoer wp i18n for dem af jer, der arbejder med flersprogede websteder. Du kan f.eks. oprette en POT-fil til et WordPress-plugin eller -tema.

wp i18n make-pot <source> [<destination>] [--slug=<slug>] [--domain=<domain>] [--ignore-domain] [--merge[=<file>]]] [--exclude=<paths>] [--skip-js]

Se dokumentationen til i18n-kommandoen.

Brug af WP-CLI med WooCommerce

Arbejder du med e-handelssteder? 🛒 Vi anbefaler at tjekke Robot Ninjas fantastiske WP-CLI WooCommerce-udviklingsguide til WP-CLI WooCommerce for hurtige og nemme kommandoer, du kan bruge. Generering af en liste over kunder, ordrer og endda oprettelse af bulkprodukter er alle mulige med WP-CLI.

Brug af WP-CLI eksternt

En af de bedste ting, du kan gøre med WP-CLI, er at administrere dine eksterne WordPress-installationer. Dette er virkelig en websideadministrators drøm, der går i opfyldelse.

For problemfrit at køre WP-CLI-kommandoer på en fjernserver via SSH havde du tidligere brug for wp-cli-ssh addon-kommandoen wp-cli-ssh. Men fra og med v0.24.0 er dette nu en del af selve WP-CLI! 👏

Vigtigt: Du skal have WP-CLI installeret både på den computer, du kører kommandoen fra, og på din server.

Konfigurering af fjernservere

Du kan konfigurere dine servere globalt eller lokalt. Hvis du vil konfigurere dem globalt, skal du bruge filen config.yml. Du kan også bruge filerne wp-cli.yml eller wp-cli.local.yml i dit nuværende arbejdskatalog.

Konfigurationen af servere fungerer nogenlunde sådan her: Indsæt dette i en af de nævnte filer:

ssh:

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

Når alt dette er gjort, kan du skrive følgende kommando for at opdatere WordPress på dit eksterne websted:

wp ssh core update --host=staging

Hvis du ejer eller administrerer mange websteder, tror jeg, at du kan se, at dette er fantastisk! Scriptet vil bede om et password, men hvis du bruger RSA-nøgler til at logge ind, kan du også undlade det. Tag et kig på denne artikel for at sætte det op.

Brug af Bash-scripts

Bash-scripts sparer dig endnu mere tid ved at automatisere opgaver. Kan du huske, hvordan vi skulle skrive en masse kommandoer for at installere WordPress? Det kan du gøre med et enkelt bash-script. Inde i en mappe opretter du en install.sh fil. Indsæt den samme kode, som vi havde før, indeni og gem den.

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]

Alt du skal gøre nu er at skrive bash install.sh og alt vil blive gjort for dig, uden brugerindgreb. Hvis du administrerer mange websteder, kan du oprette alle dine miljøer og oprette et bash-script som dette:

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 udkommer, kan dette spare dig en masse tid! Da du kan gøre hvad som helst med WP-CLI, kan du endda opdatere temaer og plugins regelmæssigt på en række klientwebsteder på én gang.

Opsummering

WP-CLI er virkelig udviklernes og websideadministratorernes drøm, der går i opfyldelse. Som udviklere kan vi oprette testwebsteder i et snuptag, tilføje testindhold og lave alverdens import/eksport-magi. Site managers kan håndtere siteopdateringer og andre opgaver for flere sites med enkelte kommandoer. Sørg for at tjekke WP-CLI v2-udgivelsesnoterne!

Hvis du ikke allerede har prøvet WP-CLI, opfordrer jeg dig indtrængende til at give det en chance. Der er også en masse fællesskabskommandoer som WP-CLI-SSH, som tilføjer endnu flere fantastiske funktioner! Hvis du løber ind i problemer, skal du sørge for at tjekke dokumentationen om WP-CLI almindelige problemer i WP-CLI.

Glem ikke, at Kinstas Google Cloud-baserede arkitektur understøtter WP-CLI out of the box. Hvis du gerne vil prøve den mest moderne WordPress-hostingarkitektur og have adgang til fantastiske værktøjer som WP-CLI, skal du prøve vores administrerede 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.