WP-CLI er et nyttig verktøy der man sender kommandoer til Wordpress via Terminal (Mac, Linux) eller Powershell/Putty (Windows).

Dette er nyttig når Wordpress er utilgjengelig via websidene, for eksempel på grunn av feilende plugin/tema eller hvis Wordpress feilet under en oppdatering.

Det første du må gjøre er å logge inn på webhotellet ditt med SSH. Eksemplene under er gjort fra Terminal-applikasjonen på macOS, men fremgangsmåten er tilsvarende for andre SSH-klienter.

Brukernavn og passord for å logge inn med SSH er det samme som FTP-brukernavnet og passordet for ditt webhotell.

Eksempel på SSH-innlogging mot Domeneshops webhotell:

ssh mittnavn@login.domeneshop.no 

Du blir da bedt om å skrive inn passord for ditt webhotell:

mittnavn@login.domeneshop.no's password: 

Neste steg er å navigere deg til mappen der filene til Wordpress-installasjonen din ligger. I de fleste tilfeller ligger dette i www-mappen, bruk kommandoen cd for å endre til korrekt mappe. I eksemplet under listes mappen du er i til høyre for brukeren din:

mittnavn@shell:~$ cd www
mittnavn@shell:~/www$ 

Du kan da verifisere at Wordpressfilene ligger i denne mappen ved å kjøre kommandoen ls -la. Dette vil liste opp alle filene som ligger i mappen, kontroller at Wordpress-filer og mapper blir listet.

Før du begynner bør du ta en backup av databasen. Det gjør du ved å kjøre følgende kommando som lagrer hele databasen til en .sql-fil:

mittnavn@shell:~/www$ wp db export backup.sql

Success: Exported to 'backup.sql'.

Generelle kommandoer

Sjekke versjon av Wordpress:

mittnavn@shell:~/www/$ wp core version
5.0.4

Oppdatere Wordpress til nyeste versjon:

mittnavn@shell:~/www$ wp core update

Updating to version 5.2.3 (nb_NO)...
Laster ned oppdateringer fra https://downloads.wordpress.org/release/nb_NO/wordpress-5.2.3.zip...
Pakker ut oppdateringen...
Success: WordPress updated successfully.

Oppdatere spesifikk plugin, Aksimet for eksempel:

mittnavn@shell:~/www$ wp plugin update akismet 

Laster ned oppdateringer fra https://downloads.wordpress.org/plugin/akismet.4.1.1.zip...
Pakker ut oppdateringen...
Installerer den nyeste versjonen...
Fjerner den gamle versjonen av utvidelsen...
Utvidelse oppdatert.
+---------+-------------+-------------+---------+
| name    | old_version | new_version | status  |
+---------+-------------+-------------+---------+
| akismet | 4.1         | 4.1.1       | Updated |
+---------+-------------+-------------+---------+
Success: Updated 1 of 1 plugins.

Oppdatere alle plugins:

mittnavn@shell:~/www$ wp plugin update --all

Aktiverer vedlikeholdstilstand...
Laster ned oppdateringer fra https://downloads.wordpress.org/plugin/akismet.4.1.1.zip...

Deaktiverer vedlikeholdstilstand...
+--------------------+-------------+-------------+---------+
| name               | old_version | new_version | status  |
+--------------------+-------------+-------------+---------+
| akismet            | 4.1         | 4.1.1       | Updated |
| better-wp-security | 7.2.0       | 7.3.3       | Updated |
+--------------------+-------------+-------------+---------+
Success: Updated 2 of 2 plugins.

Installere og aktivere plugin:

mittnavn@shell:~/www$ wp plugin install contact-form-7

Installing Contact Form 7 (5.1.1)
Laster ned installasjonsfiler fra https://downloads.wordpress.org/plugin/contact-form-7.5.1.1.zip...
Pakker ut pakken...
Installerer utvidelsen...
Utvidelsen ble installert.
Success: Installed 1 of 1 plugins.

mittnavn@shell:~/www$ wp plugin activate contact-form-7

Plugin 'contact-form-7' activated.
Success: Activated 1 of 1 plugins.

Deaktivere plugin, nyttig for å deaktivere feilende plugin:

mittnavn@shell:~/www$ wp plugin deactivate contact-form-7

Plugin 'contact-form-7' deactivated.
Success: Deactivated 1 of 1 plugins.

Bytte tema, nyttig i tilfeller der nåværende tema feiler:

mittnavn@shell:~/www$ wp theme activate twentyseventeen 

Success: Switched to 'Twenty Seventeen' theme. 

Oppdatere alle tema:

mittnavn@shell:~/www$ wp theme update --all

Aktiverer vedlikeholdstilstand...
Laster ned oppdateringer fra https://downloads.wordpress.org/theme/astra.1.8.2.zip...
Pakker ut oppdateringen...
Installerer den nyeste versjonen...
Fjerner den gamle versjonen av temaet...
Tema oppdatert.
Deaktiverer vedlikeholdstilstand...
+-----------------+-------------+-------------+---------+
| name            | old_version | new_version | status  |
+-----------------+-------------+-------------+---------+
| astra           | 1.6.2       | 1.8.2       | Updated |
| twentynineteen  | 1.1         | 1.3         | Updated |
| twentyseventeen | 1.9         | 2.1         | Updated |
+-----------------+-------------+-------------+---------+
Success: Updated 3 of 3 themes.

Opprette ny bruker, brukeren får automatisk opprettet et passord:

mittnavn@shell:~/www$ wp user create testuser eksempel@mittnavn.no --role=administrator
Success: Created user 122.
Password: MM%^b7vjSu)Ob(O8R562@rPo

Oppdatere passord for spesifikk bruker:

mittnavn@shell:~/www$ wp user update testuser --user_pass=Speak-Holmes-Curie-1945-Visit

Success: Updated user 122.

Slette uønsket bruker. Du kan enten slette brukeren og alle tilhørende poster eller slette brukeren og flytte alle poster fra brukeren over til en annen bruker:

mittnavn@shell:~/www$ wp user delete testuser --reassign=testuser2

Success: Removed user 124 from https://www.mittnavn.no.

mittnavn@shell:~/www$ wp user delete testuser
--reassign parameter not passed. All associated posts will be deleted. Proceed? [y/n] 

Success: Removed user 122 from https://www.mittnavn.no.

Avanserte kommandoer

Det er også mulig å ned nyeste versjon av Wordpress og erstatte Wordpress-filene som ligger på webhotellet fra før med «ferske» filer av fra nyeste versjon. Dette kan være nyttig om den nåværende installasjonen mangler filer som følge av en feilet oppdatering eller filer har blitt korrupte.

mittnavn@shell:~/www$ wp core download --force

Downloading WordPress 5.2.3 (nb_NO)...
md5 hash verified: qwerty12345abcdefghijlk448993849
Success: WordPress downloaded.

Søke etter en spesifikk URL i databasen i Wordpress og erstatte den med en annen:

mittnavn@shell:~/www$ wp search-replace "https://gammel.mittnavn.no" "https://ny.mittnavn.no"
--skip-columns=guid --recurse-objects

+---------------------+-----------------------+--------------+------+
| Table               | Column                | Replacements | Type |
+---------------------+-----------------------+--------------+------+
| wp_options          | option_value          | 5            | PHP  |
| wp_postmeta         | meta_value            | 2            | PHP  |
| wp_posts            | post_content          | 1            | SQL  |
| wp_users            | user_url              | 1            | SQL  |
+---------------------+-----------------------+--------------+------+
Success: Made 9 replacements.

Det er også mulig å kjøre flere kommandoer samtidig ved å sette && mellom kommandoene.


Et par eksempler under. Første eksempel henter ut diverse info fra databasen, andre eksempel oppdaterer salter i wp-config.php og sletter en bruker:

mittnavn@shell:~/www$ wp config get DB_HOST && wp config get table_prefix

mittnavn.mysql.domeneshop.no
wp_


mittnavn@shell:~/www$ wp config shuffle-salts && wp user delete testuser

Success: Shuffled the salt keys.
--reassign parameter not passed. All associated posts will be deleted. Proceed? 

Full dokumentasjon for wp-cli finner du her