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.
Hvad er WP-CLI?
WP-CLI er et kommandolinjeværktøj til udviklere til at administrere almindelige opgaver (og ikke så almindelige) i en WordPress-installation. Det kan tilføje/fjerne brugere, indlæg, kategorier, indsætte testdata, search and replace i databasen, nulstille passwords, hjælpe med at fejlfinde ydeevneproblemer og meget mere!
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
- Det grundlæggende i WP-CLI
- WP-CLI-kommandoer generelt
- Nyttige eksempler
- Brug af WP-CLI eksternt
- Brug af Bash-scripts
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
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.
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
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
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
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)
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.
Skriv et svar