WP-CLI WordPress

11 février 2017 nakama

Développement

(Cet article a été écrit il y a très longtemps, dans une galaxie très très lointaine)

Cet outil permet d’automatiser des tâches WordPress en ligne de commande et du coup gagner énormément de temps.

Installation

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

Ici on va récupérer le .phar dans notre projet et du coup l’outil est directement utilisable. La documentation est très utile et vous permet par exemple d’ajouter l’auto-complétion 🙂

Maintenant il ne reste plus qu’à vérifier si tout fonctionne.

php wp-cli.phar --info

// affichera dans mon cas
// PHP binary:	/usr/local/Cellar/php70/7.0.15_8/bin/php
// PHP version:	7.0.15
// php.ini used:	/usr/local/etc/php/7.0/php.ini
// WP-CLI root dir:	phar://wp-cli.phar
// WP-CLI packages dir:	
// WP-CLI global config:	
// WP-CLI project config:	
// WP-CLI version:	1.1.0

chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Les lignes 13 et 14 permettent de rendre exécutable le fichier et de le placer dans le dossier des commandes globales (bin). Ainsi vous allez pouvoir taper wp au lieu de php wp-cli.phar pour utiliser WP-CLI et de n’importe où

À partir de maintenant, vous allez pouvoir par exemple :

// Afficher la version de WordPress
wp core version
// Mettre à jour WordPress
wp core update

// Afficher des informations sur les plugins
wp plugin status
// Mettre à jour un plugin
wp plugin update akismet

// Afficher des informations sur les thèmes
wp theme status

// Exporter ou importer une base de données
wp db export --add-drop-table export.sql
wp db import export.sql
// Remplacer les urls de la base de données
wp search-replace 'http://old-url.dev' 'http://new-url.fr'
// Supprimer les transients de la base de données
wp transient delete --all

// Lister les crons
wp cron event list
// Créer un nouveau cron
wp cron event schedule cron_test now hourly
// Supprimer un cron
wp cron event delete cron_test

Évidemment, il y a encore beaucoup de possibilités et de paramètres pour chaque action. Ce n’est qu’un petit aperçu de plusieurs commandes utiles.

On va s’attarder sur le cron qui me semble un point important.

Mise en place d’un cron

La première étape est de le créer la fonction que l’on va appeler avec notre cron :

add_filter( 'nakama_cron_power', 'nakama_cron_hello' );

function nakama_cron_hello()
{
    error_log('cron Nakama Hello :D');
}

Notre cron va s’appeler : nakama_cron_power et utilisera la fonction en paramètre afin d’afficher dans le fichier de log un simple message.

Il ne reste plus qu’à mettre en place le cron via WP-CLI.

// nakama_cron_power > le nom
// now > exécutera le cron dès la création
// hourly > exécutera le cron chaque heure
wp cron event schedule nakama_cron_power now hourly
// le message de confirmation :)
// Success: Scheduled event with hook 'nakama_cron_power' for 2017-02-11 13:46:57 GMT.

Le texte se trouve dans les logs et on peut voir que le cron est en place et qu’il fonctionnera toutes les heures grâce à la commande.

wp cron event list

Par défaut, il y a 3 intervalles possibles :

  • hourly
  • twicedaily
  • daily

Mais ce serait pas mal de pouvoir en ajouter non ? 🙂

add_filter( 'cron_schedules', 'one_minute' );

function one_minute( $schedules ) {

    $schedules['every_one_minute'] = array(
        'interval'  => 60,
        'display'   => __( 'Toutes les minutes', 'nakama' )
    );

    return $schedules;
}

Ici, je décide de créer un nouvel intervalle qui correspond à chaque minute. Attention tout de même, le nom que l’on va devoir utiliser est celui passé en paramètre du tableau : every_one_minute (modifiable évidemment).

Il ne reste plus qu’à mettre en place le cron !

Attention : un cron ne peut pas être édité ! Il faut le supprimer et ensuite le recréer, donc dans notre exemple :

wp cron event delete nakama_cron_power
wp cron event schedule nakama_cron_power now every_one_minute

On confirme toujours que tout est en place et fonctionnel 🙂

 

Et voilà c’est fini, on a fait le tour de plusieurs éléments intéressants et utiles avec WP-CLI. Il en existe encore beaucoup d’autres, c’est pour cela que la documentation existe 🙂

Le conseil que je donnerai lorsqu’on utilise un cron, c’est de mettre des logs au début et à la fin du script (à minima) afin de s’assurer que le cron fonctionne bien et surtout pour traquer les bugs 😀

Mots-clés associés à cet article :

Retrouvez d'autres articles par catégories