Le WordPress d'aujourd'hui, décodé pour les développeurs

E-commerce

WordPress 6.8 et le rendu spéculatif : effets de bord sur le tunnel d’achat

Activer le Speculative Loading en bêta de WordPress 6.8 sur une boutique fait apparaître des appels API dupliqués côté panier. La cause : le préchargement spéculatif ne connaît rien au tunnel d'achat.

Par Clément Hadrot • 10 mars 2025 • 4 min de lecture • Aucun commentaire
WordPress 6.8 et le rendu spéculatif : effets de bord sur le tunnel d'achat

Le 10 mars 2025, la bêta de WordPress 6.8 embarque une nouveauté annoncée depuis plusieurs mois sur make.wordpress.org : le Speculative Loading, une intégration native de la Speculation Rules API des navigateurs Chromium. L’idée est simple — précharger, voire prérendre en arrière-plan, la page vers laquelle l’utilisateur est susceptible de naviguer ensuite. Sur un site vitrine, l’effet est presque uniquement positif. Sur une boutique WooCommerce, ça se complique dès la page panier.

Le test réalisé sur un environnement de recette avec la bêta de 6.8 fait apparaître un comportement inattendu : chaque survol d’un lien vers le panier ou le tunnel de commande déclenche un prérendu complet de la page ciblée, ce qui exécute son JavaScript — y compris les appels vers le Store API de WooCommerce — avant même que l’utilisateur n’ait cliqué.

Ce que fait réellement le Speculative Loading

Par défaut, WordPress 6.8 active un mode de prélecture modéré (moderate), qui précharge les documents liés visibles dans le viewport, avec une éligibilité qui exclut normalement les URL contenant des paramètres de requête ou marquées comme non cachables. Le problème survient sur les liens vers /panier/ ou /commander/, qui sont des URL propres, sans paramètre, et donc considérées éligibles au prérendu par défaut.

Or ces pages exécutent, dès leur chargement, des appels au Store API de WooCommerce pour récupérer l’état du panier — avec un nonce généré à cet instant précis. Si la page est prérendue en arrière-plan puis que l’utilisateur clique réellement quelques secondes plus tard, le navigateur peut activer la version prérendue avec un nonce déjà périmé, provoquant des erreurs 403 côté Store API au moment le moins opportun : juste avant le paiement.

Diagnostic : confirmer avec l’onglet réseau

Ouvrez les outils de développement, filtrez sur wp-json/wc/store, puis survolez (sans cliquer) un lien vers le panier depuis une page produit. Si une requête vers le Store API apparaît alors qu’aucun clic n’a eu lieu, le prérendu spéculatif est bien en cause.

L'essentiel à retenir : Le préchargement spéculatif déclenche des requêtes sur des liens jamais cliqués ; Panier et checkout consomment des nonces à chaque prérendu ; L'exclusion se règle via un filtre PHP dédié

Exclure les pages sensibles du tunnel d’achat

WordPress 6.8 expose un filtre dédié pour retirer des chemins spécifiques de l’éligibilité au préchargement, sans désactiver la fonctionnalité pour le reste du site :

add_filter( 'wp_speculation_rules_href_exclude_paths', function ( $exclude_paths ) {
    $exclude_paths[] = '/panier/*';
    $exclude_paths[] = '/commander/*';
    $exclude_paths[] = '/mon-compte/*';
    return $exclude_paths;
} );

Pour un contrôle plus fin — par exemple garder le préchargement simple mais désactiver le prérendu complet, plus risqué pour des pages dynamiques — le filtre wp_speculation_rules_configuration permet d’ajuster le mode (prefetch ou prerender) et l’eagerness globale plutôt que de tout couper.

Pourquoi ne pas simplement désactiver la fonctionnalité entière

Désactiver totalement le Speculative Loading prive le reste du catalogue — fiches produit, pages de contenu, archives — d’un gain de performance perçue réel sur la navigation. L’enjeu n’est pas de renoncer à la fonctionnalité, mais de tracer une frontière nette entre les pages où l’anticipation de navigation est sans risque et celles où elle déclenche des effets de bord côté état applicatif.

  • Pages de contenu, catégories, fiches produit : préchargement activé sans restriction.
  • Panier, tunnel de commande, mon compte : exclusion explicite via wp_speculation_rules_href_exclude_paths.
  • Pages de paiement tierces (redirection PSP) : exclusion systématique, ces domaines externes ne relèvent de toute façon pas de la même politique.

À surveiller avant la sortie stable

Cette bêta de 6.8 est l’occasion de tester le comportement en amont plutôt que de le découvrir en production après la sortie stable prévue en avril. Les thèmes et extensions qui gèrent leurs propres appels au Store API en JavaScript devraient vérifier qu’ils ne déclenchent rien d’irréversible (comme une réservation de stock) au simple chargement de page, prérendu ou non.

Sur nos environnements de recette, la checklist de compatibilité 6.8 inclut désormais une ligne dédiée : « vérifier le comportement du Speculative Loading sur le tunnel d’achat » avant toute mise à jour en production.

En résumé

Le Speculative Loading de WordPress 6.8 est une avancée de performance pour la navigation générale, mais son eagerness par défaut ne fait aucune différence entre une page de contenu et une étape du tunnel d’achat. Exclure explicitement le panier, le paiement et le compte client via wp_speculation_rules_href_exclude_paths évite les nonces prématurément consommés, sans sacrifier le gain de performance sur le reste du site.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi