Radiohead’s “All I Need”, mixed with a scene from Microcosmos (1996). The sensual pace and delicate melody of the song reminded me of a world much smaller than ours, with all the love and violence we experience.
Migrer WordPress avec WP-CLI vers un nouveau serveur
Migrer WordPress n’a pas à être stressant. Avec WP-CLI, vous orchestrez chaque étape en ligne de commande : c’est plus rapide, scriptable et reproductible.
Au programme : sauvegarde propre, transfert net, import SQL, search-replace sans casse et permissions verrouillées. Vous évitez les plugins lourds, vous gagnez en contrôle et vous limitez les surprises.
Notez que ce tutoriel ne couvre pas l’installation d’une pile serveur Web comme LEMP ou LAMP. Je recommande bien sûr NGINX et MariaDB.
Liste des tâches du tutoriel
Ancien serveur WordPress
- Installer WP-CLI sur l’ancien serveur
- Sauvegarder l’installation WordPress et la base de données
- Transférer les sauvegardes vers le nouveau serveur
Nouveau serveur WordPress
- Créer une nouvelle base de données sur le nouveau serveur
- Restaurer l’ancienne base sur la base du nouveau serveur
- Installer WordPress sur le nouveau serveur
Préparer l’ancien serveur WordPress
Installer WP-CLI
sudo wget -q https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -O /usr/bin/wp
sudo chmod 755 /usr/bin/wpCode language: JavaScript (javascript)
Entrer dans votre dossier WordPress
cd /var/www/wp-oldCode language: JavaScript (javascript)
Exporter votre base de données
mkdir -p ~/backups
wp db export ~/backups/wp-old.sql --allow-root --skip-themes --skip-plugins
Créer une archive de votre dossier WordPress
Le . inclut tous les fichiers et dossiers du répertoire courant.
L’option -z ajoute la compression gzip.
tar -czf ~/backups/wp-old.tar.gz .Code language: JavaScript (javascript)
Notez le préfixe de table dans
wp-config.php: vous devrez le renseigner pour que la restauration fonctionne sur le nouveau serveur.
Vous avez maintenant, dans le dossier ~/backups, une sauvegarde de la base de données et une archive complète du site.
Transférez ces deux fichiers sur votre ordinateur via SFTP ou SSH.
Rendre votre plugin WooCommerce compatible avec HPOS (High-Performance Order Storage)
HPOS accélère WooCommerce en stockant les commandes dans des tables dédiées. Vous gagnez en rapidité, en fiabilité et en scalabilité. Pour les nouvelles boutiques, HPOS est activé par défaut. Pour les sites plus anciens, vous pouvez l’activer en toute sécurité après vérification des extensions.
Dans cet article, je vous montre comment rendre votre plugin compatible avec HPOS. Vous verrez comment déclarer la compatibilité, utiliser l’API WooCommerce plutôt que les fonctions WordPress génériques et tester correctement. Enfin, je liste des pièges courants et des astuces de performance.
HPOS en deux minutes
- Les commandes ne vivent plus dans
wp_posts/wp_postmeta. - HPOS ajoute des tables dédiées aux commandes, adresses et index.
- Résultat : création de commande plus rapide et recherche d’ordre plus fluide.
1. Déclarez la compatibilité HPOS
Ajoutez la déclaration dans le fichier principal de votre plugin. C’est le signal officiel pour WooCommerce.
<?php
/**
* Plugin Name: Mon Plugin — Compat HPOS
* Description: Déclare la compatibilité HPOS pour WooCommerce.
* Author: Vous
* Version: 1.0.0
*
* @package MonPlugin
*/
use Automattic\\WooCommerce\\Utilities\\FeaturesUtil;
defined( 'ABSPATH' ) || exit;
/**
* Déclare la compatibilité HPOS pour le plugin.
*
* @since 1.0.0
* @return void
*/
function monplugin_declarer_compatibilite_hpos() : void {
// Vérifie la disponibilité de la classe avant l'appel.
if ( class_exists( FeaturesUtil::class ) ) {
// Le troisième argument = true -> compatible ; false -> incompatible (affiche un avertissement aux admins).
FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
}
}
add_action( 'before_woocommerce_init', 'monplugin_declarer_compatibilite_hpos' );Code language: PHP (php)
2. Utilisez l’API WooCommerce (CRUD), pas les fonctions WP
N’utilisez pas get_post() ou get_post_meta() pour les commandes. Servez-vous des objets WC_Order et des méthodes WC_Data.
<?php
/**
* Récupère et modifie une commande via l'API WooCommerce (compatible HPOS).
*
* @param int $order_id Identifiant de la commande.
* @return void
*/
function monplugin_mettre_a_jour_commande( int $order_id ) : void {
// Au lieu de get_post( $order_id ).
$order = wc_get_order( $order_id ); // Retourne un objet WC_Order ou null.
if ( ! $order instanceof WC_Order ) {
return;
}
// Métadonnées : utiliser les méthodes WC_Data (HPOS-safe).
$order->update_meta_data( '_monplugin_flag', 'yes' );
$order->add_meta_data( '_monplugin_score', 95 );
// Sauvegarde unique pour réduire les I/O (perf).
$order->save();
}Code language: HTML, XML (xml)
Remplacements typiques :
get_post_meta()→$order->get_meta( $key, true );update_post_meta()→$order->update_meta_data( $key, $value ); $order->save();add_post_meta()→$order->add_meta_data( $key, $value ); $order->save();delete_post_meta()→$order->delete_meta_data( $key ); $order->save();