Autonomie numérique et technologique

Code et idées pour un internet distribué

Gérer WordPress depuis la ligne de commande avec wp-cli

Imago voragine.net
[actualizado el ]

wp-cli est une interface de ligne de commande pour WordPress. Il vous permet de faire une multitude d'opérations d'administration et de maintenance d'une installation WordPress. D'une part, il accélère ces opérations et de l'autre vous permet de les automatiser, en les exécutant en mode non interactif en utilisant cron et un script bash par exemple.

Ici, je collecte comment effectuer des tâches de base avec WordPress en utilisant wp-cli. Pour toute autre utilisation, vous pouvez consulter la documentation officielle de wp-cli.

Comment installer wp-cli

En fait wp-cli n'a pas besoin d'installation. Vous pouvez le télécharger, par exemple en utilisant curl, et commencer à l'utiliser directement:

usuario@maquina:$curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Pour rendre son utilisation plus pratique, et disponible pour tous les utilisateurs du système en appelant simplement la commande wp, vous pouvez faire ce qui suit:

usuario@maquina: $chmod x wp-cli.phar
usuario@maquina:A$ sudo mv wp-cli.phar /usr/local/bin/wp

Pour vérifier que wp-cli est installé correctement :

usuario@maquina:$wp --info
OS: Linux 5.3.0-2-amd64 #1 SMP Debian 5.3.9-3 (2019-11-19) x86_64
OS:     Linux 5.3.0-2-amd64 #1 SMP Debian 5.3.9-3 (2019-11-19) x86_64
Shell:  /bin/bash
PHP binary:     /usr/bin/php7.3
PHP version:    7.3.10-1+b1
php.ini used:   /etc/php/7.3/cli/php.ini
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:      phar://wp-cli.phar/vendor
WP_CLI phar path:       /home/usuario
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.2.0

Comment mettre à jour wp-cli

wp-cli peut être mis à jour à l'aide de wp-cli :

usuario@maquina:$wp cli update
You have version 2.2.0. Would you like to update to 2.4.0? [y/n] y
Downloading from https://github.com/wp-cli/wp-cli/releases/download/v2.4.0/wp-cli-2.4.0.phar..
md5 hash verified:
New version works. Proceeding to replace.
Success: Updated WP-CLI to 2.4.0.

Comment installer WordPress avec wp-cli

Pour effectuer n'importe quelle opération avec wp-cli il est préférable de le faire avec l'utilisateur du serveur web et à partir de l'annuaire où vous êtes ou que vous souhaitez installer WordPress. Pour les exemples suivants, je suppose que l'utilisateur est "utilisateur" et l'emplacement WordPress /var/www/example.org, sur le serveur "machine" :

Pour installer WordPress avec wp-cli, vous devez d'abord télécharger la dernière version de WordPress:

usuario@maquina:~$ cd /var/www/example.org
usuario@maquina:~$ wp core download
Downloading WordPress 5.2.1 (en_US)...
Success: WordPress downloaded.

Ensuite, le fichier wp-config.php est généré avec les données de base de données associées à WordPress. C'est une bonne idée de ne pas taper directement le mot de passe de base de données dans la commande car il serait enregistré dans l'historique de commande. Pour éviter cela, vous pouvez utiliser le paramètre –prompt qui vous permet de transmettre des valeurs à partir d'un fichier texte précédemment créé, dans ce cas dbpass.txt.

usuario@maquina:~$ wp config create --dbname= --dbuser= --dbhost=localhost --dbprefix=lcn_ --prompt=dbpass < dbpass.txt
Success: Generated 'wp-config.php' file.
usuario@maquina:~$ rm userpass.txt

Maintenant, si vous pouvez installer WordPress. Cette étape crée le compte d'un utilisateur administrateur. Comme dans l'étape précédente, pour ne pas taper le mot de passe directement sur la ligne de commande, nous utilisons le paramètre --promp à nouveau:

usuario@maquina:~$ wp core install --url=example.org --title="Testing site" --admin_user=supervisor --admin_email=info@example.org --prompt=admin_password < userpass.txt
Success: WordPress installed successfully.
usuario@maquina:~$ rm userpass.txt

Comment mettre à jour WordPress

Le paramètre de mise à jour de la sous-commande de base peut être utilisé pour mettre à jour WordPress. Mais d'abord, vous pouvez vérifier si des mises à jour sont disponibles :

usuario@maquina:~$ wp core check-update
+---------+-------------+-------------------------------------------------------------------+
| version | update_type | package_url |
+---------+-------------+-------------------------------------------------------------------+
| 5.3.1 | major | https://downloads.wordpress.org/release/es_ES/wordpress-5.3.1.zip |
+---------+-------------+-------------------------------------------------------------------+

Si c'est le cas, vous pouvez mettre à jour :

usuario@maquina:~$ wp core update
Updating to version 5.3.1 (es_ES)...
Descargando la actualización desde https://downloads.wordpress.org/release/es_ES/wordpress-5.3.1.zip...
Descomprimiendo la actualización...
No files found that need cleaning up.
Success: WordPress updated successfully.

Comment installer et mettre à jour des plugins

Si les tâches liées au cœur wordPress sont traitées avec la sous-commande de base, les plugins utilisent la sous-commande plugin.

Vous pouvez déjà intuit la syntaxe utilisée par wp-cli : toujours la commande wp, suivie d'une sous-commande qui définit le contexte (core, plugin, thème, cli…) et une action à effectuer dans ce contexte (téléchargement, installation, mise à jour, check-update…). Ensuite, vous pouvez ajouter des modificateurs, comme nous le voyons dans l'ordre de mettre à jour tous les plugins:

usuario@maquina:~$ wp plugin update --all
Enabling Maintenance mode...
Downloading update from https://downloads.wordpress.org/plugin/event-tickets.4.10.6.1.zip...
The authenticity of event-tickets.4.10.6.1.zip could not be verified as no signature was found.
Unpacking the update...
Installing the latest version...
Removing the old version of the plugin...
Plugin updated successfully.
Downloading update from https://downloads.wordpress.org/plugin/newsletter.6.0.7.zip...
The authenticity of newsletter.6.0.7.zip could not be verified as no signature was found.
Unpacking the update...
Installing the latest version...
Removing the old version of the plugin...
Plugin updated successfully.
Disabling Maintenance mode...
+-------------------------------+-------------+-------------+---------+
| name | old_version | new_version | status |
+-------------------------------+-------------+-------------+---------+
| event-tickets | 4.10.6 | 4.10.6.1 | Updated |
| newsletter | 6.0.6 | 6.0.7 | Updated |
+-------------------------------+-------------+-------------+---------+
Success: Updated 2 of 2 plugins.

Vous pouvez également utiliser le commutateur –dry-run pour tester la mise à jour avant de l'exécuter, au cas où vous obtenez des erreurs:

usuario@maquina:$wp update plugin --all --dry-run

Comment installer et activer les langues

Les langues de base, les plugins et les thèmes disponibles sont gérés à partir du contexte linguistique. Par exemple, pour installer la traduction espagnole du noyau :

usuario@maquina:~$ wp language core install es_ES
Downloading translation from https://downloads.wordpress.org/translation/core/5.3.2/es_ES.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the translation...
Translation updated successfully.
Language 'es_ES' installed.
Success: Installed 1 of 1 languages.

Et une fois installé, pour l'activer :

usuario@maquina:~$ wp site switch-language es_ES
Success: Language activated.

Comment créer et modifier les utilisateurs

La gestion de l'utilisateur se fait dans le contexte utilisateur. Par exemple, pour répertorier tous les utilisateurs du système :

usuario@maquina:~$ wp user list
+----+------------+--------------+--------------------+---------------------+---------------+
| ID | user_login | display_name | user_email       | user_registered     | roles         |
+----+------------+--------------+--------------------+---------------------+---------------+
| 1 | supervisor  | supervisor   | info@example.org | 2019-11-28 14:09:27 | administrator |
+----+------------+--------------+--------------------+---------------------+---------------+

Pour modifier le mot de passe d'un utilisateur, par exemple de l'utilisateur "superviseur" :

usuario@maquina:~$ wp user update supervisor --promp=user_pass < userpass.txt
Success: Updated user 1.
usuario@maquina:~$ rm userpass.txt

Pour créer un nouvel utilisateur et leur attribuer le rôle d'éditeur :

usuario@maquina:~$ wp user create blas blas@example.org --role=editor
Success: Created user 2.
Password: &eRUrkL6IU^gDPTMP#h03

Comment installer, mettre à jour et activer des thèmes

La gestion des thèmes se fait dans le contexte thématique. Pour mettre à jour tous les thèmes d'une installation :

usuario@maquina:~$ wp theme update --all
Activando el modo mantenimiento...
Descargando la actualización desde https://downloads.wordpress.org/theme/twentyfifteen.2.5.zip...
Descomprimiendo la actualización...
Instalando la última versión...
Eliminando la versión antigua del tema...
El tema se ha actualizado con éxito.
Descargando la actualización desde https://downloads.wordpress.org/theme/twentyfourteen.2.7.zip...
Descomprimiendo la actualización...
Instalando la última versión...
Eliminando la versión antigua del tema...
El tema se ha actualizado con éxito.
Descargando la actualización desde https://downloads.wordpress.org/theme/twentynineteen.1.4.zip...
Descomprimiendo la actualización...
Instalando la última versión...
Eliminando la versión antigua del tema...
El tema se ha actualizado con éxito.
Descargando la actualización desde https://downloads.wordpress.org/theme/twentythirteen.2.9.zip...
Descomprimiendo la actualización...
Instalando la última versión...
Eliminando la versión antigua del tema...
El tema se ha actualizado con éxito.
Desactivando el modo mantenimiento...
+----------------+-------------+-------------+---------+
| name | old_version | new_version | status |
+----------------+-------------+-------------+---------+
| twentyfifteen | 2.2 | 2.5 | Updated |
| twentyfourteen | 2.4 | 2.7 | Updated |
| twentynineteen | 1.1 | 1.4 | Updated |
| twentythirteen | 2.6 | 2.9 | Updated |
+----------------+-------------+-------------+---------+
Success: Updated 4 of 4 themes.

Pour changer le thème actif :

usuario@maquina:~$ wp theme activate twentytwenty
Success: Switched to 'Twenty Twenty' theme.

Et pour installer un nouveau thème, nous pouvons d'abord faire une recherche dans le dépôt de thèmes wordpress.org :

usuario@maquina:~$ wp theme search flat-design
Success: Showing 1 of 1 themes.
+------+------+--------+
| name | slug | rating |
+------+------+--------+
| Tuto | tuto | 100    |
+------+------+--------+

Et puis installer l'un des résultats, et avec le paramètre --activer l'activer directement :

usuario@maquina:~$ wp theme install tuto --activate
Installing Tuto (1.2.7)
Descargando el paquete de instalación desde https://downloads.wordpress.org/theme/tuto.1.2.7.zip...
Descomprimiendo...
Instalando el tema...
El tema se ha instalado correctamente.
Activating 'tuto'...
Success: Switched to 'Tuto' theme.
Success: Installed 1 of 1 themes.

Comment faire des substitutions de base de données

wp-cli vous permet de rechercher et de remplacer une chaîne de texte dans une ou plusieurs tables de la base de données par le contexte de remplacement de recherche. Ceci est très utile par exemple lorsque vous migrez un site qui est développé sur place, vers le serveur en production où il aura son domaine définitif. Avant d'apporter une modification, vous pouvez vérifier ce qui sera modifié à l'aide du paramètre --dry-run:

usuario@maquina:~$ wp search-replace --skip-tables=arac_users 'http://localhost' 'http://example.org' --dry-run
+--------------------+-----------------------+--------------+------+
| Table              | Column                | Replacements | Type |
+--------------------+-----------------------+--------------+------+
| arac_commentmeta   | meta_key              | 0            | SQL  |
| arac_commentmeta   | meta_value            | 0            | SQL  |
| arac_comments      | comment_author        | 0            | SQL  |
| arac_comments      | comment_author_email  | 0            | SQL  |
| arac_comments      | comment_author_url    | 0            | SQL  |
| arac_comments      | comment_author_IP     | 0            | SQL  |
| arac_comments      | comment_content       | 0            | SQL  |
| arac_comments      | comment_approved      | 0            | SQL  |
| arac_comments      | comment_agent         | 0            | SQL  |
| arac_comments      | comment_type          | 0            | SQL  |
| arac_links         | link_url              | 0            | SQL  |
| arac_links         | link_name             | 0            | SQL  |
| arac_links         | link_image            | 0            | SQL  |
| arac_links         | link_target           | 0            | SQL  |
| arac_links         | link_description      | 0            | SQL  |
| arac_links         | link_visible          | 0            | SQL  |
| arac_links         | link_rel              | 0            | SQL  |
| arac_links         | link_notes            | 0            | SQL  |
| arac_links         | link_rss              | 0            | SQL  |
| arac_options       | option_name           | 0            | SQL  |
| arac_options       | option_value          | 1            | PHP  |
| arac_options       | autoload              | 0            | SQL  |
| arac_postmeta      | meta_key              | 0            | SQL  |
| arac_postmeta      | meta_value            | 13           | PHP  |
| arac_posts         | post_content          | 26           | SQL  |
| arac_posts         | post_title            | 0            | SQL  |
| arac_posts         | post_excerpt          | 14           | SQL  |
| arac_posts         | post_status           | 0            | SQL  |
| arac_posts         | comment_status        | 0            | SQL  |
| arac_posts         | ping_status           | 0            | SQL  |
| arac_posts         | post_password         | 0            | SQL  |
| arac_posts         | post_name             | 0            | SQL  |
| arac_posts         | to_ping               | 0            | SQL  |
| arac_posts         | pinged                | 0            | SQL  |
| arac_posts         | post_content_filtered | 0            | SQL  |
| arac_posts         | guid                  | 50           | SQL  |
| arac_posts         | post_type             | 0            | SQL  |
| arac_posts         | post_mime_type        | 0            | SQL  |
| arac_term_taxonomy | taxonomy              | 0            | SQL  |
| arac_term_taxonomy | description           | 0            | SQL  |
| arac_termmeta      | meta_key              | 0            | SQL  |
| arac_termmeta      | meta_value            | 0            | SQL  |
| arac_terms         | name                  | 0            | SQL  |
| arac_terms         | slug                  | 0            | SQL  |
| arac_usermeta      | meta_key              | 0            | SQL  |
| arac_usermeta      | meta_value            | 0            | PHP  |
| arac_users         | user_login            | 0            | SQL  |
| arac_users         | user_nicename         | 0            | SQL  |
| arac_users         | user_email            | 0            | SQL  |
| arac_users         | user_url              | 0            | SQL  |
| arac_users         | user_activation_key   | 0            | SQL  |
| arac_users         | display_name          | 0            | SQL  |
+--------------------+-----------------------+--------------+------+
Success: 104 replacements to be made.

Si tout va bien, vous pouvez lancer la commande sans la course à sec. le remplacement de recherche vous permet d'utiliser des expressions régulières et effectue des substitutions sur des enregistrements en format sérialisé. Vous pouvez également limiter la substitution à une série de tables ou omettre certaines d'entre elles, comme l'indique plus tôt le paramètre skip-tables.

Conclusion

wp-cli vous permet de faire n'importe quelle tâche de gestion et de maintenance d'une installation WordPress, ainsi que la gestion du contenu. Dans la section de commande du manuel wp-cli officiel, il existe de nombreux exemples de chaque contexte et de chaque commande.

Et bien sûr, n'importe laquelle de ces commandes peut être exécutée à l'aide d'un script bash, vous permettant d'automatiser les tâches et de les exécuter périodiquement en utilisant le système cron, par exemple.

Dejar un comentario

No hay comentarios en esta entrada.
*
*

 

No hay trackbacks